Explication détaillée des exemples de construction de services HTTP

零下一度
Libérer: 2017-06-27 10:06:06
original
2299 Les gens l'ont consulté
1. Introduction
1. Compréhension
Page Web cryptée (https) : tcp:443  Page Web en texte clair (http) : tcp : 80
survey.netcraft.net - Vous pouvez vérifier la dernière utilisation du serveur de site Web sur ce site Web
Le protocole de transfert hypertexte (HTTP, HyperText Transfer Protocol) est le plus protocole réseau largement utilisé. Tous les fichiers WWW doivent être conformes à cette norme. L'objectif initial de la conception de HTTP était de fournir une méthode de publication et de réception de pages HTML
2. Apache
Apache HTTP Server (appelé "Apache HTTP Server"). comme Apache) est un serveur Web open source d'Apache Software Foundation qui peut fonctionner sur la plupart des systèmes d'exploitation informatiques. Il est largement utilisé en raison de ses fonctionnalités multiplateformes et de sécurité et est l'un des logiciels côté serveur Web les plus populaires. Les fonctionnalités sont les suivantes :
1. Prend en charge le dernier protocole de communication HTTP/1.1
2 Dispose d'un processus de configuration simple et puissant basé sur des fichiers
3. Prise en charge de l'interface de passerelle universelle
4. Prise en charge des hôtes virtuels basés sur IP et sur nom de domaine
5. Prise en charge de plusieurs méthodes d'authentification HTTP
6. Intégrer le module de traitement Perl
7. Module de serveur proxy intégré
8. Prise en charge de la surveillance en temps réel de l'état du serveur et des journaux de serveur personnalisés
9. inclure des instructions (SSI)
10. Prise en charge de Secure Socket Layer (SSL)
11. Assurer le suivi du processus de session utilisateur
12. 13. Prise en charge des JavaServlets via des modules tiers
3. Installation :
www.apache.org --site officiel d'Apache
# yum install httpd* --installation httpd service
# httpd -t --Vérifiez l'exactitude du fichier de configuration
# rm -rf /etc/httpd/conf.d /welcome.conf --Supprimez l'interface de bienvenue ; car elle est installée httpd-manual, afin que vous puissiez accéder à
/ServerIp/manual
4. Fonctionne en deux modes : préfork, travailleur
mode préfork :
prefork est le MPM par défaut (par défaut) sur les plateformes Unix, utilise plusieurs processus enfants, chaque processus enfant n'a qu'un seul thread . Chaque processus ne peut maintenir qu'une seule connexion à un certain moment, haute efficacité, mais utilisation de mémoire relativement importante.
Ce module multitraitement (MPM) implémente un serveur Web non threadé et pré-forké qui fonctionne de manière similaire à Apache 1.3. Il convient aux systèmes qui ne disposent pas de bibliothèques thread-safe et doivent éviter les problèmes de compatibilité des threads. Il s'agit du meilleur MPM lorsque chaque requête doit être indépendante les unes des autres, de sorte que si un problème survient avec une requête, cela n'affectera pas les autres requêtes.
Mode Worker :
le travailleur utilise plusieurs sous-processus, chaque sous-processus a plusieurs threads , chaque thread à un certain moment Un seul la connexion peut être maintenue, l'empreinte mémoire est relativement faible et elle convient aux serveurs http à fort trafic . L'inconvénient est que si un thread plante, le processus entier "mourra" avec n'importe lequel de ses threads, afin de garantir qu'un programme doit être reconnu par le système comme "chaque thread est en sécurité" lorsqu'il est en cours d'exécution.
Ce module multi-traitement (MPM) permet au serveur Web de prendre en charge le multi-threading et le multi-traitement mixtes. Étant donné que les threads sont utilisés pour traiter les requêtes, les requêtes massives peuvent être traitées avec moins de ressources système que le MPM basé sur les processus. Mais il utilise également plusieurs processus, chacun avec plusieurs threads, pour bénéficier de la stabilité du MPM basé sur les processus.
# httpd -l --Afficher le mode d'exécution, la valeur par défaut est prefork.c
# mv -v /usr/sbin/httpd{,.prefork} --Mode préfork de sauvegarde
# mv -v /usr/sbin/httpd{.worker,} --Utiliser le mode travailleur
Explication détaillée du fichier de configuration
1. Paramètres d'environnement globaux
ServerTokens OS --Lorsque le serveur répond aux informations d'en-tête de l'hôte (en-tête), la version d'Apache et le nom du système d'exploitation sont affiché
ServerRoot "/etc/httpd" --Le répertoire de base du serveur De manière générale, il contiendra les sous-répertoires conf/ et logs/ Les chemins relatifs des autres fichiers de configuration. sont basés sur ce répertoire.
PidFile run/httpd.pid --L'emplacement du fichier de numéro de processus du premier processus httpd (le processus parent de tous les autres processus).
Timeout 60 --Si aucune donnée n'est reçue ou envoyée après 60 secondes, la connexion sera coupée
KeepAlive Off --Pas utilisé par défaut La fonction de maintien de la connexion, c'est-à-dire que le client ne peut répondre qu'à un fichier à la fois lors de la demande de connexion Il est recommandé d'autoriser
MaxKeepAliveRequests. 100 --Lorsque la connexion est conservée, le client peut définir une requête La limite maximale de la connexion pouvant répondre aux fichiers Si elle dépasse la limite, elle sera déconnectée
KeepAliveTimeout. 15 --Lors de l'utilisation de la fonction keep-alive, si l'intervalle de temps entre deux connexions adjacentes dépasse 15 secondes, elle sera déconnectée
......... ....
Écouter 80 --Le numéro de port que le serveur écoute ; Vous pouvez ouvrir plusieurs ports d'écoute
Inclure conf.d/*.conf --Will Tous les fichiers de configuration se terminant par conf dans le répertoire /etc/httpd/conf.d sont inclus
Utilisateur apache --l'utilisateur du sous-processus qui fournit des services
Groupe Apache --Le groupe d'utilisateurs du sous-processus qui fournit le service
ServerAdmin root@george.com --L'e-mail de l'administrateur adresse
ServerName mail.george.com:80 --Nom du site principal (nom d'hôte du site Web)
UseCanonicalName Off
DocumentRoot "/var/www/html" --Définissez le répertoire racine du document Web ; mais vous pouvez utiliser des liens symboliques et des alias pour pointer vers d'autres emplacements s'il ne s'agit pas d'un chemin absolu, il est supposé être un chemin ; par rapport à ServerRoot
2. Paramètres de contrôle du chemin
DirectoryIndex index.html index.html.var --le nom de fichier de page Web par défaut de le site Web, le côté gauche est préféré
AccessFileName .htaccess --Spécifiez le nom du fichier de configuration du répertoire protégé
------- -------------------------------- ----------------------- -------------------------------- ----------------------- ---
--utilisé pour encapsuler une directive de groupe, la rendant efficace uniquement pour un certain répertoire et ses sous-répertoires. Pour un répertoire sur le système de fichiers
Options Index FollowSymLinks
AllowOverride None
Ordre autoriser, refuser
Autoriser de tous
Refuser du 192.168.133.22
Chemin du répertoire -- peut être un répertoire complet A chemin ou une chaîne générique contenant la syntaxe de correspondance du shell Unix. Dans une chaîne générique, "?" correspond à n'importe quel caractère et "*" correspond à n'importe quelle séquence de caractères. Vous pouvez également utiliser "[]" pour déterminer la plage de caractères. Vous pouvez également utiliser des expressions régulières après le caractère "~"
Options --La valeur de cette commande peut être "Aucun", "Tout" ou le options suivantes Toute combinaison de : Index (avec '-' devant, la fonction de listage des répertoires sur le site Web est désactivée, sinon la fonction de listage des répertoires sur le site Web est désactivée Comprend ; ExecCGI ; MultiVues
AllowOverride --Contrôle les directives placées dans les fichiers .htaccess. Il peut s'agir de All, None (aucune configuration ne peut être vue dans .htaccess) ou d'une combinaison des directives suivantes : Options;FileInfo;AuthConfig;Limit
Order,Allow , Refuser --Contrôlez qui peut obtenir des services. Les paramètres de commande sont finalement basés sur celui de droite, et la commande peut être inversée
--------------------------------- ------- ----------------------------------------------- ------- ----------------------------------
--Pour le fichier spécifié , peut se trouver dans un certain répertoire ou globalement
Ordre refuser, autoriser
Autoriser de tous
- ------------------------------------------------------ ------ -------------------------------------------- ------ ----
-- Permet la visualisation du serveur en utilisant l'URL "http:/ /servername/server-status" Statut (ou informations); L'emplacement contrôle principalement l'URL
SetHandler server-status(server-info )
Commande refusée, autorisée
Autoriser de tous
------------- ----- --------------------------------------------- ----- ------------------------------------
Alias ​​​​/url-path /filesystem-path --mapper l'URL sur le chemin du système de fichiers (vous pouvez également utiliser le lien logiciel ln -s sur le système pour y parvenir)
3. Contrôle du mot de passe utilisateur pour l'accès au répertoire ( utilisateurs non système)
--La théorie peut également être trouvée dans Location,file
Index d'options FollowSymLinks
AllowOverride None
Commander autoriser, refuser
Autoriser de tous
authname "Authentifiez-vous"  - Inviter le navigateur à ouvrir l'URL
authtype basic
authuserfile /etc/httpd/userpasswd  --Emplacement du fichier utilisateur et mot de passe
exige un utilisateur valide
# htpasswd -c /etc/httpd/userpasswd frank -- Créer un utilisateur qui autorise l'accès
# htpasswd /etc/httpd/userpasswd george - -Créez-en un autre, rappelez-vous le paramètre '-c', qui sert à créer le fichier de mot de passe et ne peut être utilisé que lors de la création du premier utilisateur.
Remarque : Si un répertoire utilise un accès contrôlé par mot de passe, le répertoire ne sera pas visible lorsque son répertoire parent est répertorié via un navigateur Web, c'est-à-dire qu'il sera masqué. Mais on y accède en saisissant directement l’url (même si l’on dispose d’un compte et d’un mot de passe).
4. Hôte virtuel basé sur un nom de domaine
NameVirtualHost *:80 --Ajoutez cette configuration pour définir le port 80 comme port d'hôte virtuel
--Le premier hôte virtuel
ServerName www.george.com
DocumentRoot /var/www/html/
............
<
--Le deuxième hôte virtuel
ServerName mail.george .com
DocumentRoot /var/www/cgi-bin/openwebmail/
ScriptAlias ​​​​/mail /var/www/cgi-bin/openwebmail/openwebmail.pl
< ;Emplacement />
........................
Si le paramètre SeverName de cette expérience est connecté à l'adresse IP, nous pouvons également créer un hôte virtuel basé sur IP
Paramètres du journal
ErrorLog logs/error_log --L'emplacement de stockage du journal des erreurs
LogLevel warn --Définir le niveau du journal des erreurs, inclure : debug, info, notice , avertissement, erreur, critique, alerte, émergent.
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{ User-Agent}i"" combiné
............
LogFormat "%{User-agent}i" agent --ces quatre éléments sont manquants à partir du format provincial du journal d'accès
CustomLog logs/access_log combiné --Utiliser le format de journal d'accès combiné
%h – adresse IP ou nom d'hôte du client
%l – Il s'agit de l'identité RFC 1413 déterminée par l'identité du client. Le symbole "-" dans la sortie indique que les informations ici ne sont pas valides.
%u – le nom du client qui a accédé à la page Web obtenue par le système d'authentification HTTP. Il n'est valide que s'il y a une authentification. Le symbole "-" dans la sortie indique que les informations ici ne sont pas valides.
%t – L'heure à laquelle le serveur a terminé le traitement de la demande.
"%r" – Les guillemets sont le contenu de la demande envoyée par le client qui contient de nombreuses informations utiles.
%>s – Il s'agit du code d'état renvoyé par le serveur au client.
%b – Le dernier élément est le nombre d'octets renvoyés au client à l'exclusion des en-têtes de réponse.
"%{Referer}i" – Cet élément spécifie à partir de quelle page Web la demande a été soumise.
"%{User-Agent}i" – Cet élément correspond aux informations d'identification du navigateur fournies par le navigateur du client.
6. Configuration du cryptage SSL
# yum install -y mod_ssl --Installer le module de cryptage
# vim /etc/httpd/conf.d /ssl.conf
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine activé
SSLProtocol all -SSLv2
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES
SSLCertificateFile /etc/pki/tls/certs/localhost.crt --Fichier de clé publique de configuration
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key --Fichier de clé de configuration
SSLOptions +StdEnvVars
< ;/Files>
ServerName www.george.com
DocumentRoot /var/www/cgi-bin/openwebmail/
ScriptAlias ​​​​/mail /var/www/ cgi -bin/openwebmail/openwebmail.pl
SSLOptions +StdEnvVars
Options Index
ordre refuser, autoriser
Autoriser de tous
SetEnvIf User-Agent ".*MSIE.*"
nokeepalive ssl-unclean-shutdown
downgrade-1.0 force-response-1.0
Journaux CustomLog/ssl_request_log
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"
6.1 Configurez vous-même le certificat
# mkdir /etc/pki/test/
# cd / etc/pki/test
# openssl genrsa -out /etc/pki/test/test.key 1024 --secret key
# openssl req -new -key test.key - out test .csr
Nom du pays (code à 2 lettres) [XX]:cn
Nom de l'État ou de la province (nom complet) []:guangDong
Nom de la localité (par exemple, ville) [Ville par défaut] :Shenzhen
Nom de l'organisation (par exemple, entreprise) [Société par défaut Ltd] :IT
Nom de l'unité organisationnelle (par exemple, section) []:maintenance
Nom commun (par exemple, votre nom ou le nom d'hôte de votre serveur) []:www.george.com
Adresse e-mail [] :root@mail.george.com
Veuillez saisir les attributs « supplémentaires » suivants
à envoyer avec votre demande de certificat
Un mot de passe de challenge []:123456
Un nom d'entreprise facultatif []:Azt
# openssl req -x509 -days 365 -key test.key -in test.csr -out test.crt --Public key
# ls --Ensuite, configurez le test.crt && test.key suivant sur /etc /httpd/conf.d/ssl.conf peut être
test.crt test.csr test.key
6.2 Testez le certificat que vous avez configuré
Mais le certificat que nous avons créé nous-mêmes est reconnu dans le navigateur comme non fiable ; Le statut du certificat est également « Parce que le certificat racine de l'autorité de certification n'est pas dans le magasin « Autorités de certification racine de confiance », il n'est pas fiable. »
  

  Nous devons importer manuellement le certificat (test.crt) que nous avons créé nous-mêmes dans le navigateur vers "Trusted Root Certification Authority" && "Trusted Publisher"". En utilisant Google Chrome comme colonne, les étapes sont les suivantes :

". C'est OK.

 

À ce moment, utilisez le navigateur pour ouvrir notre site Web et vérifier l'état du certificat "Il n'y a aucun problème avec le certificat".

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal