Heim > Betrieb und Instandhaltung > Sicherheit > So konfigurieren Sie Apache

So konfigurieren Sie Apache

WBOY
Freigeben: 2023-05-12 11:13:19
nach vorne
944 Leute haben es durchsucht

Die Konfiguration von Apache wird durch die Datei httpd.conf konfiguriert, daher werden die folgenden Konfigurationsanweisungen in der Datei httpd.conf geändert.
Konfiguration der Hauptseite (Grundkonfiguration)

(1) Grundkonfiguration:
ServerRoot „/mnt/software/apache2“ #Der Ort, an dem Ihre Apache-Software installiert ist. Wenn für andere angegebene Verzeichnisse kein absoluter Pfad angegeben ist, sind die Verzeichnisse relativ zu diesem Verzeichnis.

PidFile logs/httpd.pid #Der Speicherort der Prozessnummerndatei des ersten httpd-Prozesses (der übergeordnete Prozess aller anderen Prozesse).

Listen 80 #Die Portnummer, auf die der Server lauscht.

ServerName www.clusting.com:80 #Name der Hauptseite (Hostname der Website).

ServerAdmin admin@clusting.com #Administrator-E-Mail-Adresse.

DocumentRoot „/mnt/web/clusting“ #Der Webseiten-Speicherort der Hauptseite.


Das Folgende ist die Zugriffskontrolle für das Verzeichnis der Hauptseite:

/Verzeichnis>

In der obigen Verzeichnisattributkonfiguration gibt es hauptsächlich die folgenden Optionen:

Optionen: Konfigurieren Sie, welche Funktionen in einem bestimmten Verzeichnis verwendet werden:

ExecCGI: Ausführung zulassen der CGI-Skripte in diesem Verzeichnis.

FollowSymLinks: Ermöglicht dem Dateisystem die Verwendung symbolischer Links in diesem Verzeichnis.

Indizes: Wenn der Benutzer auf das Verzeichnis zugreift und die von DirectoryIndex angegebene Homepage-Datei (z. B. index.html) nicht finden kann, wird die Dateiliste im Verzeichnis an den Benutzer zurückgegeben.

SymLinksIfOwnerMatch: Bei Verwendung symbolischer Links ist der Zugriff nur möglich, wenn der Dateieigentümer des symbolischen Links mit dem Eigentümer der eigentlichen Datei identisch ist.

Weitere verfügbare Werte und Bedeutungen finden Sie unter: http://www.clusting.com/Apache/ApacheManual/mod/core.html#options


AllowOverride: Erlaubt Direktiventypen, die in .htaccess-Dateien vorhanden sind (.htaccess-Dateien Der Name kann geändert werden und der Dateiname wird durch die AccessFileName-Direktive bestimmt):
None: Wenn AllowOverride auf None gesetzt ist. Suchen Sie in diesem Verzeichnis nicht nach .htaccess-Dateien (kann den Serveraufwand verringern).

Alle: Alle Anweisungen können in .htaccess-Dateien verwendet werden.

Weitere verfügbare Werte und Bedeutungen (z. B. Optionen FileInfo AuthConfig Limit usw.) finden Sie unter: http://www.clusting.com/Apache/ApacheManual/mod/core.html#AllowOverride

Reihenfolge: Kontrolle beim Zugriff Welche der beiden Zugriffsregeln Zulassen und Verweigern Vorrang hat:

Zulassen: Liste der Hosts, denen der Zugriff gestattet ist (verfügbare Domänennamen oder Subnetze, zum Beispiel: Zulassen ab 192.168.0.0/16).

Verweigern: Liste der Hosts, denen der Zugriff verweigert wird.

Eine detailliertere Verwendung finden Sie unter: http://www.clusting.com/Apache/ApacheManual/mod/mod_access.html#order

DirectoryIndex index.html index.htm index.php #Einstellungen der Homepage-Datei (In diesem Beispiel legen Sie die Homepage-Datei auf index.html, index.htm und index.php fest.)


(2) Serveroptimierung (MPM: Multi-Processing Modules)
Der Hauptvorteil von Apache2 besteht darin, dass es eine bessere Unterstützung bietet Für Multiprozessoren verwenden Sie beim Kompilieren die Option --with-mpm, um den Arbeitsmodus von Apache2 zu bestimmen. Wenn Sie wissen, welchen Arbeitsmechanismus der aktuelle Apache2 verwendet, können Sie mit dem Befehl httpd -l alle Module von Apache auflisten und wissen, wie es funktioniert:

prefork: Wenn httpd -l prefork.c auflistet, müssen Sie dies tun Ändern Sie die folgenden Absätze:



StartServers 5 #Die Anzahl der beim Starten von Apache gestarteten httpd-Prozesse.

MinSpareServers 5 #Die Mindestanzahl der vom Server verwalteten Leerlaufprozesse.

MaxSpareServers 10 #Die maximale Anzahl der vom Server verwalteten Leerlaufprozesse.

MaxClients 150 #Maximale Anzahl gleichzeitiger Verbindungen.

MaxRequestsPerChild 1000 #Wie oft jeder untergeordnete Prozess zum Dienst angefordert wird, bevor er beendet wird. 0 bedeutet keine Begrenzung und es wird empfohlen, den Wert auf 1000 festzulegen.




In diesem Arbeitsmodus werden nach dem Serverstart 5 httpd-Prozesse gestartet (insgesamt 6 einschließlich des übergeordneten Prozesses, der über den Befehl ps -ax|grep httpd angezeigt werden kann). Wenn ein Benutzer eine Verbindung herstellt, verwendet Apache einen inaktiven Prozess, um die Verbindung bereitzustellen, und der übergeordnete Prozess verzweigt einen untergeordneten Prozess. Bis die Anzahl der inaktiven Prozesse im Speicher MaxSpareServers erreicht. Dieser Modus dient der Kompatibilität mit einigen älteren Programmversionen. Meine Standardoptionen für die Kompilierzeit.

worker: Wenn httpd -l worker.c auflistet, müssen Sie die folgenden Abschnitte konfigurieren:



StartServers 2 #Die Anzahl der beim Starten von Apache gestarteten httpd-Prozesse.

MaxClients 150 #Maximale Anzahl gleichzeitiger Verbindungen.

MinSpareThreads 25 #Die Mindestanzahl der vom Server verwalteten Leerlauf-Threads.

MaxSpareThreads 75 #Die maximale Anzahl der vom Server verwalteten Leerlauf-Threads.

ThreadsPerChild 25 #Die Anzahl der Threads, die von jedem untergeordneten Prozess generiert werden.

MaxRequestsPerChild 0 #Wie oft jeder untergeordnete Prozess zum Dienst angefordert wird, bevor er beendet wird. 0 bedeutet keine Begrenzung und es wird empfohlen, den Wert auf 1000 festzulegen.




Dieser Modus verwendet Threads, um Client-Verbindungen zu überwachen. Wenn ein neuer Client eine Verbindung herstellt, akzeptiert einer der inaktiven Threads die Verbindung. Der Server startet beim Start zwei Prozesse, und die Anzahl der von jedem Prozess generierten Threads ist festgelegt (bestimmt durch ThreadsPerChild), sodass beim Start 50 Threads vorhanden sind. Wenn 50 Threads nicht ausreichen, teilt der Server automatisch einen Prozess auf und generiert 25 weitere Threads.


perchild: Wenn httpd -l perchild.c auflistet, müssen Sie die folgenden Abschnitte konfigurieren:



NumServers 5 #Die Anzahl der beim Serverstart gestarteten untergeordneten Prozesse

StartThreads 5 #Die Anzahl der Threads, die beim Start jedes untergeordneten Prozesses gestartet werden

MinSpareThreads 5 #Die minimale Anzahl inaktiver Threads im Speicher

MaxSpareThreads 10 #Die maximale Anzahl inaktiver Threads

MaxThreadsPerChild 2000 #Die maximale Anzahl, wie oft jeder Thread angefordert werden kann vor dem Verlassen. 0 ist nicht eingeschränkt.

MaxRequestsPerChild 10000 #Wie oft jeder untergeordnete Prozess ausgeführt wird, bevor er erneut geforkt wird. 0 bedeutet keine Einschränkungen.



In diesem Modus ist die Anzahl der untergeordneten Prozesse festgelegt und die Anzahl der Threads ist nicht begrenzt. Wenn der Client eine Verbindung zum Server herstellt, stellt der inaktive Thread Dienste bereit. Wenn die Anzahl der inaktiven Threads nicht ausreicht, generiert der untergeordnete Prozess automatisch Threads, um neue Verbindungen zu bedienen. Dieser Modus wird für Multisite-Server verwendet.
(3) Konfiguration der HTTP-Rückgabeinformationen:

ServerTokens Prod #Dieser Parameter legt die vom HTTP-Header zurückgegebenen Apache-Versionsinformationen fest. Die verfügbaren Werte und Bedeutungen sind wie folgt:

Prod: nur der Softwarename, zum Beispiel: Apache
Major: enthaltene Hauptversionsnummer, zum Beispiel: Apache/2
Minor: enthält Nebenversionsnummer, zum Beispiel: Apache/2.0
Min: nur die vollständige Versionsnummer von Apache, zum Beispiel: Apache/2.0.54
OS : Enthält den Betriebssystemtyp, zum Beispiel: Apache /2.0.54 (Unix)
Vollständig: Enthält von Apache unterstützte Module und Modulversionsnummern, zum Beispiel: Apache/2.0.54 (Unix) mod_ssl/2.0.54 OpenSSL/0.9. 7g
ServerSignature Off #Ob bei einem Fehler auf der Seite Informationen zur Serverversion angezeigt werden. Die empfohlene Einstellung ist Aus


(4) Einstellung für dauerhafte Verbindung

KeepAlive On #Aktivieren Sie die Funktion für dauerhafte Verbindung. Das heißt, wenn der Client eine Verbindung zum Server herstellt, bleibt er nach dem Herunterladen der Daten verbunden.

MaxKeepAliveRequests 100 #Die maximale Anzahl von Anfragen für einen Verbindungsdienst.

KeepAliveTimeout 30 #Wie lange wird die Verbindung fortgesetzt? Wenn die Verbindung keine Daten mehr anfordert, wird die Verbindung getrennt. Der Standardwert beträgt 15 Sekunden.

Alias-Einstellungen
Für Seiten, die sich nicht in dem von DocumentRoot angegebenen Verzeichnis befinden, können Sie entweder symbolische Verbindungen oder Aliase verwenden. Die Alias-Einstellungen lauten wie folgt:

Alias ​​​​/download/ "/var/www/download/" #Beim Zugriff können Sie Folgendes eingeben: http://www.custing.com/download/

mnt/software/apache2/cgi-bin/“ # Beim Zugriff auf: http://www.clusting.com/cgi-bin/. Die CGI-Skriptdateien in diesem Verzeichnis müssen jedoch über ausführbare Berechtigungen verfügen!

(public_html)

UserDir public_html (Die Homepage des Benutzers wird im Verzeichnis public_html unter dem Home-Verzeichnis des Benutzers gespeichert. Die URL http://www.clusting.com/~bearzhang/file.html liest die Datei /home/bearzhang/public_html/ .html-Datei)

chmod 755 /home/bearzhang #Anderen Benutzern das Lesen der Datei ermöglichen.

Benutzerverzeichnis /var/html (die URL http://www.clusting.com/~bearzhang/file.html lautet /var/html/bearzhang/file.html)

Benutzerverzeichnis /var/www/*/docs (Die URL http://www.clusting.com/~bearzhang/file.html lautet /var/www/bearzhang/docs/file.html)

Protokolleinstellungen

(1) Fehlerprotokolleinstellungen
ErrorLog logs/error_log #Der Speicherort des Protokolls
LogLevel warn #Die Ebene des Protokolls

Das angezeigte Format ist wie folgt:
[Mon. Okt. 10 15:54:29 2005] [Fehler] [Client 192.168.10.22] Zugriff auf /download/ fehlgeschlagen, Grund: Benutzeradministrator hat keinen Zugriff

(2) Zugriffsprotokolleinstellungen

Die Standardformate von Protokollen sind wie folgt:
LogFormat "%h %l %u %t "%r" %> ;s %b "%{Referer}i" "%{User-Agent}i"" kombiniert
LogFormat "%h %l %u %t "%r" %>s %b" common #common ist das Protokoll Formatname
LogFormat „ %{Referer}i -> %U“ Referer
LogFormat „%{User-agent}i“ Agent
CustomLog logs/access_log common


Die Parameter im Format sind wie folgt:

% h – die IP-Adresse oder der Hostname des Clients

%l – Dies ist die vom Client ermittelte RFC 1413-Identität. Das Symbol „-“ in der Ausgabe zeigt an, dass die Informationen hier ungültig sind.

%u – Der vom HTTP-Authentifizierungssystem erhaltene Name des Clients, der auf die Webseite zugegriffen hat. Sie ist nur gültig, wenn eine Authentifizierung vorliegt. Das Symbol „-“ in der Ausgabe zeigt an, dass die Informationen hier ungültig sind.

%t – Der Zeitpunkt, zu dem der Server die Verarbeitung der Anfrage abgeschlossen hat.

"%r" – Die Anführungszeichen sind der Inhalt der vom Kunden gesendeten Anfrage, der viele nützliche Informationen enthält.

%>s – Dies ist der Statuscode, der vom Server an den Client zurückgegeben wird.

%b – Das letzte Element ist die Anzahl der an den Client zurückgegebenen Bytes ohne den Antwortheader.

"%{Referer}i" – Dieses Element gibt an, von welcher Webseite die Anfrage gesendet wurde.

"%{User-Agent}i" – Bei diesem Element handelt es sich um die vom Browser des Kunden bereitgestellten Browser-Identifikationsinformationen.

Das Folgende ist ein Beispiel für ein Zugriffsprotokoll:
192.168.10.22 – bearzhang [10/Okt/2005:16:53:06 +0800] „GET /download/ HTTP/1.1“ 200 1228
192.168.10.22 – – [10.10.2005:16:53:06 +0800] „GET /icons/blank.gif HTTP/1.1“ 304 –
192.168.10.22 – – [10.10.2005:16:53:06 +0800] „GET /icons/back.gif HTTP/1.1“ 304 –

Eine ausführliche Erläuterung der einzelnen Parameter finden Sie unter: http://www.clusting.com/Apache/ApacheManual/logs.html


Benutzerauthentifizierungskonfiguration
(1 )in der httpd.conf:
AccessFileName .htaccess
.........
Alias ​​/download/ "/var/www/download/"

Optionsindizes
AllowOverride AuthConfig

(2) Erstellen Sie eine Passwortdatei:
/usr/local/apache2/bin/htpasswd -c /var/httpuser/passwords bearzhang

(3) Konfigurieren Sie den Server so, dass er ein Passwort anfordert, und teilen Sie dem Server mit, welchen Benutzern der Zugriff gestattet ist
#Gültiger Benutzer erforderlich #alle gültigen Benutzer

Konfiguration des virtuellen Hosts
(1) Konfiguration des virtuellen Hosts basierend auf der IP-Adresse
Listen 80

DocumentRoot /www/example1
ServerName www.example1. com
< /VirtualHost>
Listen 172.20.30:80 ilisten 172.20.30.40:8080
Listen 172.20.30.50:80

& lt; virtualhost 172.20.30.40:80>RO OT/WWW/Example1 -80
Servername www.example1.com

gt;
< VirtualHost 172.20.30.50:80>
DocumentRoot /www/example2-80
ServerName www.example1.org

DocumentRoot /www/example2-8080
ServerName www.example2.org
Domänennamenbasierter virtueller Host Konfiguration auf einem Server mit einer einzelnen IP-Adresse:
# Stellen Sie sicher, dass Apache auf Port 80 lauscht
Listen 80

# Lausche auf virtuellen Host-Anfragen auf allen IP-Adressen # 🎜🎜# NameVirtualHost *:80


DocumentRoot /www/example1
ServerName www.example1.com
ServerAlias ​​​​example1.com * .example1.com
# Weitere Anweisungen hier


www.example2.org
# Weitere Anweisungen hier


(4) Konfigurieren Sie domänennamenbasierte virtuelle Hosts auf Servern mit mehreren IP-Adressen: # 🎜🎜 #Listen 80

# Dies ist der „Hauptserver“, der auf 172.20.30.40 läuft
ServerName server.domain.com
DocumentRoot /www/mainserver #🎜🎜 ## 🎜🎜 ## Dies ist die andere Adresse
# Weitere Anweisungen hier ...
www.example2.org
# Weitere Anweisungen hier ...


(5) Führen Sie verschiedene Sites auf verschiedenen Ports aus (basierend auf mehreren) Konfigurieren Sie einen Domänennamen -basierter virtueller Host auf dem Server des Ports):
Listen 80
Listen 8080

NameVirtualHost 172.20.30.40:80
NameVirtualHost 172.20.30.40:8 080 # 🎜 🎜#
🎜## 🎜🎜# .30.40:80> ServerName www.example2.org
DocumentRoot /www/otherdomain-80

ServerName www.example2.org
DocumentRoot /www/otherdomain-8080
Basierend auf dem Domänennamen und der Konfiguration des IP-basierten hybriden virtuellen Hosts:
Listen 80

NameVirtualHost 172.20.30.40 #🎜🎜 #

DocumentRoot /www /example1
ServerName www.example1.com


< ;VirtualHost 172.20.30.40>
DocumentRoot /www/example2
ServerName www.example2.org





SSL-Verschlüsselungskonfiguration

Lassen Sie uns zunächst einige grundlegende Konzepte verstehen Konfiguration: #🎜 🎜#
Das Konzept des Zertifikats: Zuerst muss ein Stammzertifikat vorhanden sein, und dann wird das Stammzertifikat zum Ausstellen des Serverzertifikats und des Clientzertifikats verwendet. Im Allgemeinen handelt es sich um das Serverzertifikat und das Clientzertifikat in einer horizontalen Beziehung. SSL muss zur Authentifizierung ein Serverzertifikat installieren. Deshalb: In dieser Umgebung müssen mindestens drei Zertifikate vorhanden sein: Root-Zertifikat, Server-Zertifikat, Client-Zertifikat. Vor dem Generieren eines Zertifikats gibt es normalerweise einen privaten Schlüssel, der zum Generieren einer Zertifikatsanforderung verwendet wird und dann das Stammzertifikat des Zertifikatsservers zum Ausstellen des Zertifikats verwendet.

Das von SSL verwendete Zertifikat kann von Ihnen selbst generiert oder von einer kommerziellen Zertifizierungsstelle (wie Verisign oder Thawte) signiert werden.

Probleme bei der Ausstellung von Zertifikaten: Wenn Sie ein kommerzielles Zertifikat verwenden, lesen Sie bitte die Anweisungen des jeweiligen Verkäufers für die spezifische Signaturmethode; wenn es sich um ein von einem engen Freund ausgestelltes Zertifikat handelt, können Sie das verwenden CA.sh-Skripttool, das mit openssl geliefert wird.

Wenn Sie kein Zertifikat für einen separaten Client ausstellen, muss das Client-Zertifikat nicht generiert werden. Client und Server verwenden dasselbe Zertifikat.
(1) Die Hauptparameter in der Konfigurationsdatei conf/ssl.conf sind wie folgt konfiguriert:

Listen 443
SSLPassPhraseDialog buildin
#SSLPassPhraseDialog exec:/path/to/program 
SSLSessionCache dbm:/usr/local/apache2/logs/ssl_scache 
SSLSessionCacheTimeout 300 
SSLMutex file:/usr/local/apache2/logs/ssl_ Mutex

 

# Allgemeines Setup für den virtuellen Host 
DocumentRoot "/usr/local/apache2/htdocs" 
ServerName www.example.com:443 
ServerAdmin you@example .com 
ErrorLog /usr/local/apache2/logs/error_log 
TransferLog /usr/local/apache2/logs/access_log 

SSLEngine on 
SSLCipherSuite ALL:! ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL 

SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server. crt 
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server.key 
CustomLog /usr/local/apache2/logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER }x "%r" %b" 

 

(2) 创建和使用自签署的证书: 
a.Erstellen Sie einen privaten RSA-Schlüssel für Ihren Apache-Server
/usr/local/openssl/bin/opens sl genrsa - des3 -out /usr/local/apache2/conf/ssl.key/server.key 1024 

b. Erstellen Sie eine Zertifikatssignierungsanfrage (CSR) apache2/conf/ssl.key/server.csr 

c. Erstellen Sie ein selbstsigniertes CA-Zertifikat (X509-Struktur) mit dem RSA-Schlüssel der CA
/usr/local/openssl/bin/openssl req -x509 -days 365 -key /usr/local/apache2/conf/ssl .key/server.key -in /usr/local/apache2/conf/ssl.key/server.csr -out /usr/local/apache2/conf/ssl.crt/server.crt 

/usr/local/openssl/bin/openssl genrsa 1024 -out server.key 
/usr/local/openssl/bin/openssl req -new -key server.key -out server.csr 
/usr /local/openssl/bin/openssl req -x509 -days 365 -key server.key -in server.csr -out server.crt 

(3) 创建自己的CA(认证证书),并使用该CA来签署服务器的证书。 
mkdir /CA 
cd /CA 
cp openssl-0.9.7g/apps/CA.sh /CA 
./CA. sh -newca 
openssl genrsa -des3 -out server.key 1024 
openssl req -new -key server.key -out server.csr 
cp server.csr newreq.pem 
. /CA.sh -sign 

cp newcert.pem /usr/local/apache2/conf/ssl.crt/server.crt

cp server.key /usr/local/apache2/conf/ssl.key/# 🎜🎜#

Das obige ist der detaillierte Inhalt vonSo konfigurieren Sie Apache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage