NGINX 配置问题

NGINX 配置问题

我的 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";

相关内容