我刚刚设置了nginx来服务一个站点上的静态请求,但是我的服务器上有很多站点,我想知道,我应该为所有这些站点正确配置新的nginx服务器吗?
我现在在做什么。我有一个包含所有Apache虚拟主机条目的文件,其中包含如下内容:
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>
我在Apache的ports.conf中有这个:
Listen 8080
因此,我设置了nginx来处理一个站点(sky2high.net),创建了下一个配置文件(/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;
}
}
对于这个域来说,它工作得很好,但是另一个虚拟主机当然是坏的。
所以,问题是:nginx是否有最终的配置选项,witch可以帮助处理来自所有虚拟主机(域)的所有请求,并以正确的方式服务它们?我的意思是,这个选项不允许为每个虚拟主机写单独的配置文件(所有这一切都是双重的,比如根和索引选项),但只允许为所有虚拟主机写一个?
我应该把问题转移到服务器故障吗?
更新:
嗯…我不知道它是怎么工作的,但它是。我已经创建了下一个配置文件:
/等/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/*;
}
和
/etc/nginx/sites启用/默认
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;
}
}
我不明白它是怎么工作的,但它是…
更新2:或者它不工作!我在控制台中看到了“top”,并认为Apache不仅为PHP请求提供服务,而且还为静态内容提供服务。=(