NGINX定位问题
我有django和flask应用程序通过不同端口在同一台机器上运行: Django在服务器8088上运行 Flask在服务器上运行:666 在NGINX.conf中,我有以下代码:NGINX定位问题,nginx,Nginx,我有django和flask应用程序通过不同端口在同一台机器上运行: Django在服务器8088上运行 Flask在服务器上运行:666 在NGINX.conf中,我有以下代码: location / { proxy_pass http://127.0.0.1:8088; } location ^/server2 { proxy_pass http://127.0.0.1:666; }
location / {
proxy_pass http://127.0.0.1:8088;
}
location ^/server2 {
proxy_pass http://127.0.0.1:666;
}
Django已经成功运行了一年多,其中as flask是一个新的添加。每当我试图访问其中一个Flask url时,我要么得到一个“此url在此服务器上不存在”错误,要么偶尔得到一个500错误(当我一直在摆弄时)
如果我为特定的烧瓶url写入位置信息,如下所示:
location /server2/splash {
proxy_pass http://127.0.0.1:666/splash;
}
它可以工作,但我显然不想为flask应用程序中的每个URL编写单独的位置信息
我已经在stackoverflow上浏览了许多现有的Nginx位置帖子,但我一直无法让它正常工作。有什么想法吗
谢谢
编辑
这是我试图实现的一个示例,但不是每个URL的单独映射,而是覆盖所有URL的单个映射:
location /server2{
proxy_pass http://127.0.0.1:666/splash;
}
location /server2/split {
proxy_pass http://127.0.0.1:666/split;
}
location /server2/export {
proxy_pass http://127.0.0.1:666/export;
}
location /server2/import {
proxy_pass http://127.0.0.1:666/import;
}
为什么要使用
^
符号?只需移除它,我认为它会起作用:
location /server2 {
proxy_pass http://127.0.0.1:666;
}
请注意,当您使用
location/server2
时,server2
仍在传递给您的flask应用程序
在这种情况下,Nginx正在执行以下操作:
server.com/server2 => http://127.0.0.1:666/server2
server.com/server2/splash => http://127.0.0.1:666/server2/splash
在这种情况下,位置
没有进行重写。始终检查/var/log/nginx
(或日志所在的位置),以检查浏览器执行的请求以及处理站点规则后nginx查找的内容
您可能需要设置一个上游
指令:
upstream flask_server {
server 127.0.0.1:666;
}
server {
...
location /server2 {
proxy_pass http://flask_server;
}
}
我试过两种方法(包括其他方法),但都失败了。你解决了问题吗?您是否两个应用程序都只针对本地主机?您使用的是“nginx服务器块”吗?一个月前我做了一个类似的教程!也许会有帮助