www_apache2
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
www_apache2 [2012/01/12 13:17] – thierry | www_apache2 [2012/04/22 21:55] – thierry | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Apache2 ====== | ====== Apache2 ====== | ||
+ | ===== Catch-all ===== | ||
+ | |||
+ | Lien: http:// | ||
+ | |||
+ | " Catch-all DNS, VirtualHost et on fait mumuse avec les noms de sous-domaines " ... a suivre. | ||
+ | |||
===== Stress avec Curl-Loader ===== | ===== Stress avec Curl-Loader ===== | ||
Ligne 57: | Ligne 63: | ||
Donc: | Donc: | ||
# ulimit -n 10000 | # ulimit -n 10000 | ||
+ | |||
+ | ==== Exemples de conf ==== | ||
+ | |||
+ | En pratique: | ||
+ | |||
+ | J'ai fait des tests en utilisant des machines virtuels, dans un reseau virtualisé avec des interfaces " | ||
+ | |||
+ | Les principaux interets: | ||
+ | *le reseau est hyper rapide (estimé à 10Gb/s!) puisque tout passe en RAM | ||
+ | *ce reseau etant vierge, je suis libre d'y mettre n' | ||
+ | |||
+ | Voici une conf de test, largement inspiré de l' | ||
+ | ########### GENERAL SECTION ################################ | ||
+ | BATCH_NAME= test | ||
+ | CLIENTS_NUM_MAX=10000 | ||
+ | CLIENTS_NUM_START=50 | ||
+ | CLIENTS_RAMPUP_INC=25 | ||
+ | INTERFACE=eth1 | ||
+ | NETMASK=17 | ||
+ | IP_ADDR_MIN= 192.168.128.32 | ||
+ | IP_ADDR_MAX= 192.168.191.255 | ||
+ | CYCLES_NUM= 5 | ||
+ | URLS_NUM= 3 | ||
+ | | ||
+ | ########### URL SECTION #################################### | ||
+ | | ||
+ | URL=http:// | ||
+ | URL_SHORT_NAME=" | ||
+ | REQUEST_TYPE=GET | ||
+ | TIMER_URL_COMPLETION = 1500 # In msec. When positive, Now it is enforced by cancelling url fetch on timeout | ||
+ | TIMER_AFTER_URL_SLEEP = 20 | ||
+ | | ||
+ | ### | ||
+ | | ||
+ | URL=http:// | ||
+ | URL_SHORT_NAME=" | ||
+ | REQUEST_TYPE=GET | ||
+ | TIMER_URL_COMPLETION = 5000 # In msec. When positive, Now it is enforced by cancelling url fetch on timeout | ||
+ | TIMER_AFTER_URL_SLEEP = 2500 | ||
+ | | ||
+ | ### | ||
+ | | ||
+ | URL=http:// | ||
+ | URL_SHORT_NAME=" | ||
+ | REQUEST_TYPE=GET | ||
+ | TIMER_URL_COMPLETION = 5000 # In msec. When positive, Now it is enforced by cancelling url fetch on timeout | ||
+ | TIMER_AFTER_URL_SLEEP = 500 | ||
+ | | ||
+ | ### | ||
+ | |||
+ | |||
+ | Donc, on va faire notre test en communicant via eth1 , avec beaucoup d'IP. | ||
+ | |||
+ | # curl-loader test.conf | ||
+ | |||
+ | Voila. | ||
===== Log Syslog ===== | ===== Log Syslog ===== | ||
Ligne 243: | Ligne 305: | ||
# / | # / | ||
+ | |||
+ | Avec " | ||
+ | RPAFproxy_ips < | ||
==== Logs ==== | ==== Logs ==== | ||
Ligne 304: | Ligne 369: | ||
Voila. | Voila. | ||
+ | |||
+ | ==== https reverse proxy ==== | ||
+ | |||
+ | Liens: | ||
+ | *http:// | ||
+ | *http:// | ||
+ | *http:// | ||
+ | |||
+ | Soit un domain: toto.mondomain.fr | ||
+ | |||
+ | export NAME=toto.mondomain.fr | ||
+ | | ||
+ | openssl genrsa -des3 -out $NAME.key 1024 | ||
+ | (entrer une passe phrase provisoire) | ||
+ | openssl req -new -key $NAME.key -out $NAME.csr | ||
+ | |||
+ | CN: | ||
+ | |||
+ | Virer la pass-phrase: | ||
+ | cp $NAME.key $NAME.key.bak | ||
+ | openssl rsa -in $NAME.key.bak -out $NAME.key | ||
+ | |||
+ | === 1 domaine === | ||
+ | |||
+ | Un seul domaine | ||
+ | |||
+ | openssl x509 -req -days 3650 -in $NAME.csr -signkey $NAME.key -out $NAME.crt | ||
+ | |||
+ | Les clefs sont prêtes. | ||
+ | |||
+ | === multi-domaine === | ||
+ | |||
+ | Lien: http:// | ||
+ | |||
+ | Il faut mettre plusieurs domaines dans le certificat de la facon suivante: | ||
+ | |||
+ | Créer un fichier " | ||
+ | < | ||
+ | [ mydomain_http ] | ||
+ | nsCertType | ||
+ | keyUsage | ||
+ | extendedKeyUsage | ||
+ | subjectKeyIdentifier | ||
+ | authorityKeyIdentifier | ||
+ | subjectAltName | ||
+ | [ mydomain_http_subject ] | ||
+ | DNS.1 = sub1.mondomain.fr | ||
+ | DNS.2 = sub2.mondomain.fr | ||
+ | ... etc ... | ||
+ | DNS.x = xxxx.mondomain.fr | ||
+ | </ | ||
+ | |||
+ | Et enfin | ||
+ | openssl x509 -req -days 3650 -in $NAME.csr -signkey $NAME.key -out $NAME.crt -extfile $NAME.domain_extensions.txt -extensions mydomain_http | ||
+ | |||
+ | Et voila: tout les domaines " | ||
+ | |||
+ | | :!: Il serai aussi possible d' | ||
+ | |||
+ | === nginx === | ||
+ | |||
+ | FIXME : Un exemple, mais je n'ai pas tout compris... | ||
+ | |||
+ | server { | ||
+ | listen 443; | ||
+ | server_name .thierry-jaouen.fr .tjaouen.fr; | ||
+ | | ||
+ | ssl on; | ||
+ | ssl_certificate / | ||
+ | ssl_certificate_key / | ||
+ | | ||
+ | keepalive_timeout 60; | ||
+ | | ||
+ | location / { | ||
+ | proxy_pass http:// | ||
+ | access_log off; | ||
+ | | ||
+ | proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; | ||
+ | | ||
+ | ### Set headers #### | ||
+ | proxy_set_header Host $host; | ||
+ | proxy_set_header X-Real-IP $remote_addr; | ||
+ | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||
+ | |||
+ | ### Most PHP, Python, Rails, Java App can use this header ### | ||
+ | proxy_set_header X-Forwarded-Proto https; | ||
+ | |||
+ | ### By default we don't want to redirect it #### | ||
+ | proxy_redirect | ||
+ | } | ||
+ | | ||
+ | } | ||
+ | |||
+ | Le " | ||
+ | |||
+ | **MAIS** , entre **'' | ||
+ | |||
+ | C'est pour cela que le flag " | ||
+ | |||
+ | Ainsi, pour vos règles de **'' | ||
+ | |||
+ | Remplacer: | ||
+ | | **'' | ||
+ | par | ||
+ | | **'' | ||
===== Apache HA ===== | ===== Apache HA ===== | ||
Ligne 709: | Ligne 879: | ||
Et voila ? | Et voila ? | ||
+ | Bug corrigé. | ||
| | ||
www_apache2.txt · Dernière modification : 2012/05/10 20:49 de thierry