使用 nginx 进行 Web 应用路由

使用 nginx 进行 Web 应用路由

我尝试使用 nginx 来服务一个 web 应用程序,当我请求 root url 时,一切都很顺利,例如http://xxx.xxx.xxx.xxx:8002/(我没有域名,所以使用IP地址和端口)

该应用程序有自己的内部路由,我希望能够从浏览器的地址栏使用它,例如http://xxx.xxx.xxx.xxx:8002/profile

我得到 404,因为 nginx 在根文件夹中查找目录,我猜。

我把我的配置改成这样:

server {
    listen 8002 default_server;
    server_name _;
    root /home/ubuntu/sites/mysite-frontend;

    location ~ /.* {
        rewrite "/.*" / last;
    }
}

现在我得到状态代码 500,并且日志显示以下内容:

2016/09/08 08:36:27 [错误] 29869#0:*3 处理“/”时重写或内部重定向循环,客户端:yyy.yyy.yyy.yyy,服务器:_,请求:“GET /profile HTTP/1.1”,主机:“xxx.xxx.xxx.xxx:8002”

我应该如何更改配置才能使其正常工作?

答案1

是你的 webapp /index.htmlindex指示index.html,这就是默认配置与/URI 一起工作的原因。

你应该添加一个try_files指示使用默认操作/index.html,在这种情况下所有指向不存在的静态文件的 URI 都将被路由到您的 web 应用程序。

server {
    listen 8002 default_server;
    index index.html;
    root /home/ubuntu/sites/mysite-frontend;

    location / {
        try_files $uri $uri/ /index.html;
    }
}

我已经index明确了指令(但在这种情况下没有必要)。

相关内容