我的 nginx 配置有问题。问题是它总是使用代理配置,而从不使用 beta.node365-p.se 配置。
我希望如果请求的域是 beta.node365-p.se,服务器应该在本地处理它,但如果请求是其他内容,它应该将其代理到另一个 apache 服务器。
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.php index.html index.htm;
server_name beta.node365-p.se;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name "";
location / {
proxy_buffers 16 4k;
proxy_buffer_size 2k;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://31.44.238.211:80;
}
}
答案1
仅在第二个虚拟主机中更改server_name "";
并server_name _;
让选项。default_server
第一个 server_name 情况意味着您匹配没有 Host 指令的请求(即 HTTP/1.0 请求)。第二个情况意味着,如果考虑到初始请求的 Host 标头,其他 vhost 不包含正确的 server_name,则匹配作为第二个选项选择的通配符服务器名称。
更新:
- 您的conf缺少vhosts中的监听指令。
- 您在代理时没有传递正确的 Host 标头,请
proxy_set_header Host $host;
通过进行更改proxy_set_header Host "beta.node365-p.se";
。