请问这种情况下 Nginx 应该怎么配置?

2015-10-10 12:46:54 +08:00
 ldehai
main.py 是 web 后台管理, api.py 是给 app 访问的,
url 使用主域名后跟 /api 的路径;
使用 supervisor 分别配置了两个 program 。
用Nginx怎么配置upstream才能实现api和后台单独服务,互不干扰?

3034 次点击
所在节点    NGINX
11 条回复
pengfei
2015-10-10 12:53:16 +08:00
不知道另外加一个 location 块合不合用
'location ^~ /api {}'
ldehai
2015-10-10 12:59:03 +08:00
@pengfei 但是得指定端口才行
oott123
2015-10-10 13:02:57 +08:00
location / proxy_pass upstream1
location /api proxy_pass upstream2
tan9le
2015-10-10 13:04:34 +08:00
就按照 @pengfei 说的两个 location 块,对应两个 upstream 块不行吗?
ldehai
2015-10-10 13:07:12 +08:00
@oott123
@tan9le
谢谢,我来试试看
yuchting
2015-10-10 13:12:06 +08:00
server {
listen 80;
server_name www.ooooo.com;
error_page 404 = /404.htm;

location /f/fade_pay {

proxy_pass http://xxxxx.com/fade_pay;
proxy_set_header Host "xxxxx.com";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

access_log off;
error_log off;
}

location /f/fade_payok {

proxy_pass http://yyyyy.com/fade_payok.html;
proxy_set_header Host "yyyyy.com";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

access_log off;
error_log off;
}

location /f/test_fade_pay {

proxy_pass http://zzzzz.com/fade_pay;
proxy_set_header Host "zzzzz.com";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

access_log off;
error_log off;
}

。。。。。。
}

我的反向代理服务器,只要备案一个域名,挂很多个服务器,端口可以任意。
不知道和题主的答案切合不切合。
salltm
2015-10-10 13:14:13 +08:00
..配置 server 的时候先写 /API 部分. 再写 /..
ryd994
2015-10-10 16:01:47 +08:00
location /
location /api
这样难道不行么

@salltm 先后没关系, nginx 对于静态路径是按最长匹配优先
adexbn
2015-10-10 16:04:36 +08:00
@salltm nginx 的配置和顺序无关,只和规则有关,静态高于正则,长优先于短
ldehai
2015-10-10 20:25:02 +08:00
@adexbn
@oott123
@pengfei
@ryd994
@salltm
@tan9le
@yuchting

经测试,新增一个 location 可行,和顺序无关。配置如下:


worker_processes 1;

events {
worker_connections 1024;
}

http {
gzip on;

#web server for cms
upstream app {
server 127.0.0.1:8000;
server 127.0.0.1:8001;
}

#api server for app
upstream api {
server 127.0.0.1:9000;
server 127.0.0.1:9001;
}

server {
listen 80;

location / {
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_pass http://app;
}
location /api {
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_pass http://api;
}
}
}
ldehai
2015-10-10 20:26:33 +08:00
多谢各位!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/226878

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX