Debian 8 nginx配置

时间:2017-07-31 18:38:27

标签: nginx configuration debian webserver debian-based

在我的Nginx网络服务器上,我有几个这样的虚拟主机:   - api.example.com   - www.example.com   - cv.example.com

但是当我访问www.example.com/example并且这不是一个有效的路径时,它会给我404 api.example.com页面。但为什么呢?

这是我目前www.example.com的nginx配置:

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    access_log /var/log/nginx/www.example.com-access.log timed;
    error_log /var/log/nginx/www.example.com-error.log;
    root /var/www/wwwexamplecom/html/_site;
    server_name example.com www.example.com;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";

    include snippets/ssl-example.com.conf;
    include snippets/ssl-params.conf;

    location / {
        index index.html index.php;
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_param  SCRIPT_FILENAME /var/www/example/html/public/index.php;
        include fastcgi_params;
    }

    location ~ /.well-known {
                allow all;
        }
}

这是我的api.example.com的配置:

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    access_log /var/log/nginx/api.example.com-access.log timed;
    error_log /var/log/nginx/api.example.com-error.log;
    root /var/www/apiexamplecom/html/public;
    server_name api.example.com;

    include snippets/ssl-api.example.com.conf;
    include snippets/ssl-params.conf;

    location / {
        index index.html index.php;
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_param  SCRIPT_FILENAME /var/www/apiexamplecom/html/public/index.php;
        include fastcgi_params;
    }

    location ~ /.well-known {
                allow all;
        }
}

我认为自己在/位置部分,但我不是真的如何解决这个问题。这也发生在其他虚拟主机上。

1 个答案:

答案 0 :(得分:0)

如果无法在位置块中找到任何内容,则必须明确告知nginx您想要抛出404错误。否则,它会尝试匹配您的默认'服务器块(在这种情况下似乎是api.example.com,因为你没有指定默认值)。它无法在该服务器中找到任何内容,然后它会尝试404。

要明确告诉nginx如果无法在您的位置块中找到任何内容,则抛出404,将=404添加到try_files行的末尾。这意味着,如果找不到$uri$uri/或任何php文件的任何文件,则抛出404而不尝试任何其他文件。

try_files $uri $uri/ /index.php?q=$uri&$args =404;