我有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;
}
Django已成功运行了一年以上,这是一个新的补充。每当我尝试访问其中一个Flask网址时,我会得到“此网址上不存在此网址”错误,或者有时会出现500错误(当我一直在摆弄时)。
如果我写下特定烧瓶网址的位置信息,请执行以下操作:
location /server2/splash {
proxy_pass http://127.0.0.1:666/splash;
}
它有效,但我显然不想为烧瓶应用程序中的每个URL写单独的位置信息。
我已经浏览了stackoverflow上的许多现有Nginx位置帖子,但我无法让它工作。有什么想法吗?
谢谢!
修改
这是我正在尝试实现的一个示例,而不是每个网址的单独映射,我想要一个覆盖所有网址的单一映射:
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;
}
答案 0 :(得分:0)
为什么使用^
标志?只需删除它我认为它会起作用:
location /server2 {
proxy_pass http://127.0.0.1:666;
}
答案 1 :(得分:0)
请注意,当您使用location /server2
时,server2
仍会传递给您的烧瓶应用程序。
在这种情况下,Nginx正在执行以下操作:
server.com/server2 => http://127.0.0.1:666/server2
server.com/server2/splash => http://127.0.0.1:666/server2/splash
在这种情况下,location
没有进行重写。始终检查/var/log/nginx
(或您的日志所在的位置)以检查浏览器完成的请求以及Nginx在处理您网站的规则后查找的内容。
您可能需要设置upstream
指令:
upstream flask_server {
server 127.0.0.1:666;
}
server {
...
location /server2 {
proxy_pass http://flask_server;
}
}