我在端口8000上运行应用程序,需要将端口80上的所有请求重定向到我的应用程序(端口8000)。我知道使用nginx是解决它的方法。我按如下方式修改了ngninx.conf:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:8000;
try_files $uri $uri/ =404;
}
}
我现在能够将请求重定向到我的应用服务器,但xyz.com/abc形式的请求返回404找不到。我认为上面的内容会匹配所有请求,并将所有内容重定向到端口8000上的应用程序。我在这里做错了什么?
答案 0 :(得分:1)
try_files
检查服务器块中定义的root
是否存在文件。它在location /
块中执行的操作是检查文件,然后在找不到文件时返回404
。也许您希望您的配置看起来像这样?:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ @my_proxy;
}
location @my_proxy {
proxy_pass http://127.0.0.1:8000;
}
}
在这里,如果try_files
找不到任何内容,它会将请求传递给在端口8000上运行的app服务器。如果它仍然返回404
那么该文件确实不存在