如果我的 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 /admin 和 location /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_files
和proxy_pass
放在同一个location
中。这会导致 Nginx 在允许请求向上游传递之前检查其文档根目录中是否存在该文件。
您不需要拒绝对配置文件的访问,因为这些文件一开始就不应该在文档根目录中。
我是 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 /admin 和 location /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_files
和proxy_pass
放在同一个location
中。这会导致 Nginx 在允许请求向上游传递之前检查其文档根目录中是否存在该文件。
您不需要拒绝对配置文件的访问,因为这些文件一开始就不应该在文档根目录中。