如果我的 nginx 配置错误,如何更正?

How to correct my nginx configuration if it is wrong?

我是 nginx 新手。我尝试学习使用搜索 www 和 Whosebug。大多数情况下,我会得到帮助以了解如何构建我的 nginx 配置。

我的域名是 www.mysite.com。一切; 着陆页错误服务器错误必须重定向 默认 index.html。我还定义了我的访问和错误日​​志。所有这些都在 /etc/nginx/conf.d/default.conf.

中完成(在代码下方)

我需要重定向 (proxy_pass) /admin, /user 以及与它们相关的任何内容。例如 /admin 也有不同的文件夹,如 /admin/login/。 /admin 必须重定向后,我需要一切。 /user 也是如此。

1) 查看我的代码我是否重定向了 location /adminlocation /user 正确吗?

2) 我也用try_files $uri $uri/ =404;在重定向中。它还将 404 重定向到默认 index.html。我做得对吗?

3) 我也拒绝访问某些文件和文件夹。我做得对吗?

我的主要问题是如果我的nginx配置错误如何更正?因此,为了理解正确的 nginx 配置,我将我的问题分为上面 3 个不同的问题。我希望我没有阻止 Whosebug 如何提问指南。

谢谢。

更新:

server {
    charset UTF-8;
    listen 80;
    listen [::]:80;

    server_name www.mysite.com;
    access_log  /var/log/nginx/host.access.log  main;
    error_log  /var/log/nginx/host.error.log  main;

    # define a root location variable and assign a value
    set $rootLocation /usr/share/nginx/html;

    # define www.mysite.com landing page to the static index.html page
    location / {
        root   rootLocation;
        index  index.html index.htm;
    }

    # define error page to the static index.html page
    error_page 404  /index.html;
    location = /index.html {
        root rootLocation;
        internal;
    }

    # redirect server error pages to the static index.html page
    error_page   500 502 503 504  /index.html;
    location = /index.html {
        root   rootLocation;
        internal;
    }

    # redirect www.mysite.com/admin to localhost
    # /admin or /admin/ or /admin/**** must be redirect to localhost
    location /admin {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass "http://127.0.0.1:3000";
    }

    # redirect www.mysite.com/user to localhost
    # /user or /user/ or /user/**** must be redirect to localhost   
    location /user {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass "http://127.0.0.1:3001";
    }
}

通常在 server 块中放置一次 root 语句,而不是在多个 location 块中重复相同的值。


您正在使用 proxy_pass 更改 URI,然后再向上游传递。在这种情况下,location 值和 proxy_pass 值的 URI 部分应该都以 / 结尾,或者都不以 / 结尾。有关详细信息,请参阅 this document

通常您不会想要将try_filesproxy_pass放在同一个location中。这会导致 Nginx 在允许请求向上游传递之前检查其文档根目录中是否存在该文件。


您不需要拒绝对配置文件的访问,因为这些文件一开始就不应该在文档根目录中。