0

我有一个有两个ip的服务器:当我使用nginx作为jboss7的反向代理时,为了防止直接访问使用ip地址,(我们已经配置了dns),我使用下面的配置:

# You may add here yourdefault_server;
# server {
#
server {
    listen *:80;
    server_name _;
    return 404;
}

server {

    listen  80;
    listen [::]:80 default_server ipv6only=on;

root /usr/share/nginx/html;
index index.html index.htm;

server_name www.shikuaigou.com localhost;
charset utf-8;

location / {
    proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For  $http_x_forwarded_for;  
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;   
    proxy_set_header   Host $host;
            proxy_set_header   X-Forwarded-Host $host;
    proxy_set_header   X-Forwarded-Server $host;
    proxy_pass http://jboss;
}

location /doc/ {
    alias /usr/share/doc/;
    autoindex on;
    allow 127.0.0.1;
    allow ::1;
    deny all;
}
}
server {
listen 80;
    server_name example.com;
    rewrite "^/(.*)$" http://www.example.com/$1 permanent;
}

server {

    listen 12.34.56.78;

    server_name www.example.com;

    root /usr/share/nginx/html;

    index index.html index.htm;

    location / {
            proxy_set_header   X-Forwarded-For  $http_x_forwarded_for;
            proxy_set_header   Host $host;
            proxy_set_header   X-Forwarded-Host $host;
            proxy_set_header   X-Forwarded-Server $host;
            proxy_pass http://jboss;
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
            # try_files $uri $uri/ /index.html;
            # Uncomment to enable naxsi on this location
            # include /etc/nginx/naxsi.rules
    }
}

但只有在 ip 可以匹配服务器 whitch 返回 404,另一个无法匹配

配置server_name _;

这是什么原因造成的?

4

1 回答 1

1

因为你有listen 12.34.56.78;所以 nginx 选择这个服务器来处理请求12.34.56.78,因为它更特定于那个 IP。

另请注意,这server_name _;实际上没有任何意义,除了不正确的域名。

参考:

于 2013-08-12T12:11:28.460 回答