Nginx + supervisord 怎么配置可以实现公网域名访问

2018-02-01 09:34:00 +08:00
 PMinV2
  1. supervisord config
[unix_http_server]
file=/tmp/supervisor.sock   ; the path to the socket file
;chmod=0700                 ; socket file mode (default 0700)
;chown=nobody:nogroup       ; socket file uid:gid owner
;username=test              ; default is no username (open server)
;password=test               ; default is no password (open server)

[inet_http_server]         ; inet (TCP) server disabled by default
port=0.0.0.0:9001        ; ip_address:port specifier, *:port for all iface
username=test              ; default is no username (open server)
password=test             ; default is no password (open server)

  1. Nginx config

upstream uwsgi_backend {
    server 127.0.0.1:8002;
}

server {
    listen   80;
    server_name mydomain.com;

    location ^~ /.git {
        deny all;
    }

    location ^~ /static {
        root   /;
        index  index.html;
        expires 1M;
        access_log off;
        add_header Cache-Control "public";
    }

    location / {
        proxy_next_upstream error timeout http_500 http_503;
        proxy_connect_timeout 4000ms;
        proxy_read_timeout    30s;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Rewrite-URL $request_uri;
        client_max_body_size 10m;

        uwsgi_pass  uwsgi_backend;
        include uwsgi_params;
    }

}
#  这里是出问题的地方,为希望能通过代理 9001 端口到本地的 0.0.0.0:9001 实现公网访问
server {
  listen mydomain.com:9001;

  server_name mydomain.com;

  location / {
    proxy_pass http://0.0.0.0:9001;
    proxy_buffering     off;
  }
}

下面是我谷歌搜索了很多跟我这个情况不太一样,求大神指点。

https://segmentfault.com/a/1190000006902417

https://serverfault.com/questions/858859/nginx-proxy-pass-to-supervisord

5345 次点击
所在节点    程序员
31 条回复
PMinV2
2018-02-01 11:16:48 +08:00
问题得到了解决,感谢各位的鼎力相助。

原因如下:我的 Nginx 和 supervisord 都没问题了,但是我的端口以为没问题但是其实存在问题
fuck,阿里云安全组,禁止了我的端口。
我一开始使用了下面两条命令开通了防火墙访问权限

iptables -A INPUT -p tcp --dport 9001 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 9001 -j ACCEPT
iptables -L -n
#看到下面这个就以为 OK 了
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:9001

但是经过仔细排查问题重新使用下面这个命令解决了问题
iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 9001 -j ACCEPT
service iptables save
iptables -nvL
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:9001
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:9889
虽然作为一个产品并不能看懂这两条有啥区别,我是从 iptables -h 文档中查到的命令进行尝试的,有大佬解释一下吗?

运行良好的 supervisord Web 服务
running
pid 9706, uptime 0:26:03 wechatspider_processor Restart Stop Clear Log Tail -f
running
pid 15689, uptime 0:00:01 wechatspider_redis Restart Stop Clear Log Tail -f
running
pid 9707, uptime 0:26:03 wechatspider_scheduler Restart Stop Clear Log Tail -f
PMinV2
2018-02-01 11:17:56 +08:00
@seancheung 我重新考虑了防火墙
gqkkk
2018-02-01 11:20:55 +08:00
0.0.0.0 是全地址监听了
自己看下日志 会告诉你端口被占用的
PMinV2
2018-02-01 11:21:21 +08:00
更正一下:0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:9001
PMinV2
2018-02-01 11:21:48 +08:00
@gqkkk 是防火墙的问题,已经解决了
defunct9
2018-02-01 11:28:09 +08:00
So, 我说的是大实话。你一开始的描述跟问题毫无关联。上去看一眼就知道了。导致一堆人开始猜火车。
PMinV2
2018-02-01 11:29:29 +08:00
@defunct9 大佬要是能给我指点迷津就更好了。作为一个 PM 能到部署阶段已经不易了
GenHong
2018-02-01 11:38:12 +08:00
@defunct9 表示赞同~~
20has
2018-02-01 12:38:04 +08:00
@PMinV2 作为一个运维 我想说的是
阿里云的安全组和 iptables 防火墙是两个东西 详情可以看看阿里云帮助文档
又是反向代理,又是 iptables 端口转发,还有安全组,老铁,你要闹哪样! 😁
如果是我我会 安全组入口全部放行 iptables 禁用 只使用 nginx 代理即可
tailf
2018-02-01 15:06:39 +08:00
解决办法:


1. 把 Nginx 删了
2. 把防火墙的 9001 端口打开


哦了。
knva
2018-02-01 15:53:54 +08:00
反向代理 9001 有这么麻烦?
下个宝塔面板点两下的事情..

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

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

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

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

© 2021 V2EX