Je viens de configurer nginx pour servir une requête statique sur un site, mais j'ai beaucoup de sites sur mon serveur et je me demande, devrais-je droit nouveau configuration du serveur nginx pour chacun d'eux? Ce que je fais maintenant. Je fichier avec toutes les entrées d'hôtes virtuels pour Apache avec quelques-chose comme ceci:Apache et la configuration ultime pour nginx pour servir tous les hôtes virtuels de la bonne manière
NameVirtualHost *:8080
<VirtualHost *:8080>
ServerName sky2high.net
DocumentRoot /home/mainsiter/data/www/sky2high.net
</VirtualHost>
<VirtualHost *:8080>
ServerName surdo.asmon.ru
DocumentRoot /home/surdo/data/www/surdo.asmon.ru
</VirtualHost>
<VirtualHost *:8080>
ServerName surdoserver.ru
DocumentRoot /home/surdo/data/www/surdoserver.ru
</VirtualHost>
J'ai ce dans ports.conf apache:
Listen 8080
Et donc j'ai mis en place nginx pour travailler avec un site (sky2high.net), le fichier de configuration suivant créé (/etc/nginx/sites-enabled/sky2high.net):
server {
listen 80;
server_name sky2high.net www.sky2high.net;
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
access_log /var/log/nginx.access_log;
location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ {
root /home/mainsiter/data/www/sky2high.net/;
index index.php;
access_log off;
expires 30d;
}
location ~ /\.ht {
deny all;
}
location/{
proxy_pass http://127.0.0.1:8080/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 60;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}
}
Et cela fonctionne très bien pour ce domaine, mais bien sûr, un autre des hôtes virtuels cassé. Donc, la question est: existe-t-il une option de configuration ultime pour nginx, qui peut aider à gérer toutes les requêtes, de tous les hôtes virtuels (domaines) et les servir de la bonne manière? Je veux dire, une option qui permet de ne pas écrire des fichiers de configuration séparés pour chaque hôte virtuel (avec tout ce truc doublé comme les options root et index), mais seulement un pour tous les hôtes virtuels? PS: devrais-je déplacer la question à serverfault? Emm .. Je me demande comment ça marche, mais ça l'est. Je l'ai fait venir les fichiers de configuration:
/etc/nginx/nginx.conf
user www-data;
worker_processes 2;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
gzip on;
gzip_min_length 1000;
gzip_proxied any;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
et
/etc/nginx/sites-enabled/default
server {
listen 80;
location/{
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}
}
I ne comprends pas comment ça marche, mais c'est ...
MISE À JOUR 2: ou ça ne marche pas! J'ai cherché à "top" dans la console et metioned que apache sert non seulement la demande php, mais pour le contenu statique soit = (
Vous pouvez modifier une ligne à: proxy_set_header hôte $ host: proxy_port de $; – dalore