我尝试使用 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.html
。index
指示是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
明确了指令(但在这种情况下没有必要)。