V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
ldehai
V2EX  ›  NGINX

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

  •  
  •   ldehai ·
    ldehai · 2015-10-10 12:46:54 +08:00 · 3034 次点击
    这是一个创建于 3322 天前的主题,其中的信息可能已经有所发展或是发生改变。
    main.py 是 web 后台管理, api.py 是给 app 访问的,
    url 使用主域名后跟 /api 的路径;
    使用 supervisor 分别配置了两个 program 。
    用Nginx怎么配置upstream才能实现api和后台单独服务,互不干扰?

    11 条回复    2015-10-10 20:26:33 +08:00
    pengfei
        1
    pengfei  
       2015-10-10 12:53:16 +08:00   ❤️ 1
    不知道另外加一个 location 块合不合用
    'location ^~ /api {}'
    ldehai
        2
    ldehai  
    OP
       2015-10-10 12:59:03 +08:00
    @pengfei 但是得指定端口才行
    oott123
        3
    oott123  
       2015-10-10 13:02:57 +08:00 via Android   ❤️ 1
    location / proxy_pass upstream1
    location /api proxy_pass upstream2
    tan9le
        4
    tan9le  
       2015-10-10 13:04:34 +08:00   ❤️ 1
    就按照 @pengfei 说的两个 location 块,对应两个 upstream 块不行吗?
    ldehai
        5
    ldehai  
    OP
       2015-10-10 13:07:12 +08:00
    @oott123
    @tan9le
    谢谢,我来试试看
    yuchting
        6
    yuchting  
       2015-10-10 13:12:06 +08:00   ❤️ 1
    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
        7
    salltm  
       2015-10-10 13:14:13 +08:00   ❤️ 1
    ..配置 server 的时候先写 /API 部分. 再写 /..
    ryd994
        8
    ryd994  
       2015-10-10 16:01:47 +08:00   ❤️ 1
    location /
    location /api
    这样难道不行么

    @salltm 先后没关系, nginx 对于静态路径是按最长匹配优先
    adexbn
        9
    adexbn  
       2015-10-10 16:04:36 +08:00   ❤️ 1
    @salltm nginx 的配置和顺序无关,只和规则有关,静态高于正则,长优先于短
    ldehai
        10
    ldehai  
    OP
       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
        11
    ldehai  
    OP
       2015-10-10 20:26:33 +08:00
    多谢各位!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5136 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:54 · PVG 11:54 · LAX 19:54 · JFK 22:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.