nginx,127.0.0.1 可以访问,但是 127.0.0.1:8000 就被拒绝访问,为什么?

2018-03-13 11:50:31 +08:00
 sevenQu

我想部署在本地,系统是 Ubuntu16.04 ,所以 server_name 是 127.0.0.1

网页提示

Try:
Checking the connection
Checking the proxy and the firewall

这是我的 ngnix 的配置文件  

server {
listen 80;
server_name 127.0.0.1;

    root /home/www/blog;
    access_log /home/www/blog/logs/access.log;
    error_log /home/www/blog/logs/access.log;

    location / {  
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;  
        proxy_set_header Host $http_host;  
        proxy_redirect off;  
        if (!-f $request_filename) {  
            proxy_pass http://127.0.0.1:8000;  
            break;  
        }  
    }  
}
13006 次点击
所在节点    Python
39 条回复
sevenQu
2018-03-13 13:10:23 +08:00
@ybping 试了一下,不是提示无法访问,而是 502 bad gateway,感觉 @aricxu 说的挺对的,我目前是 supervision 启动不了
xiayun
2018-03-13 14:42:48 +08:00
你本地后端有 8000 端口的服务存在吗?
Mojy
2018-03-13 15:06:52 +08:00
nginx 好像是要与 uwsgi 配合搞吧?你 uwsgi 配置了吗?
litter123
2018-03-13 15:22:44 +08:00
netstat -an | grep 8000

截个图看看
msg7086
2018-03-13 15:36:40 +08:00
这楼感觉乱得一批啊,特别是那位不懂的大佬,不懂就别来添乱了好不好求你们了。

=====

首先这里有俩程序,一个叫 nginx,一个叫 gunicorn。

nginx
它的作用是向外提供服务,是面向用户的窗口,所以 listen 需要写 80,root 需要写网站的静态文件目录地址,proxy_pass 需要写后端的监听地址。

gunicorn
它的作用是起来你的程序,是面向代码的窗口,对外与 nginx 相连接,所以 listen 写 8000,和上方 proxy_pass 的地址对应。

=====

首先,你访问的地址应该是 127.0.0.1,而不是 8000 端口。
然后,两个程序要同时运行,才能访问到网站。
至于出现 welcome to nginx,可能是(1)你修改完配置没重载,(2)你写的这段配置没有被执行,(3)你写了其他虚拟主机配置,导致访问时访问了另一个虚拟主机,(4)预装的静态页面你没有删除。

自己好好查一下吧。

最后贴两个链接:
http://gunicorn.org/#quickstart
http://gunicorn.org/#deployment
geek123
2018-03-13 15:41:54 +08:00
端口没被占了?
sevenQu
2018-03-13 15:42:14 +08:00
@msg7086 老哥,通透,我去学习一下,十分感谢,说实话
sevenQu
2018-03-13 18:38:54 +08:00
@msg7086
使用 supervisorctl reread 如果不加 sudo 的话提示是这个,我使用的是 pyenv 创建的 3.6.4,我感觉这个出问题了,修改权限可以 reread,但是那个 python2.7 感觉不对,是不是应该改一下,怎么改?

[Errno 13] Permission denied: file: /usr/lib/python2.7/socket.py line: 228
lastpass
2018-03-13 18:50:27 +08:00
日志日志 先看日志。
meowoo
2018-03-13 18:56:45 +08:00
首先 8000 端口的服务没起来

然后你 nginx 里配置的难道不是文件不存在才转发到 8000 上? 所以访问存在的最多就是 welcome 了吧 根本没转发
raphaelsoul
2018-03-13 20:33:31 +08:00
0.0.0.0:8000 和 127.0.0.1:8000 什么区别?你搞清楚就知道为什么了
wisej
2018-03-13 20:56:31 +08:00
@sevenQu 没有关系,只要你指定的是你所想要启动的 Flask 实例就行。你这里没有指定绑定的地址,就像我说的,你可以尝试加 -b 127.0.0.1:8000,这样才会监听到 8000 端口
xiaofengchen
2018-03-13 21:03:18 +08:00
1、首页是 Welcome to nginx 可以看看 /etc/nginx/sites-enabled/路径下是不是只有 default,如果你单独写了配置文件,那么删掉 default,首页就不是“ Welcome to nginx ”了;
2、检查防火墙有没有允许 8000 端口(不过就算没允许,你 nginx 反向代理后,访问 127.0.0.1:80 应该是能运行的,允许后访问 127.0.0.1:8000 和 80 端口的结果一样,如果有问题那么就先不要管 nginx 这一层,在 gunicorn 和程序上找原因);
3、如果上面没解决 运行 gunicorn wsgi -c bind = '0.0.0.0:2000' pid = '/tmp/manager.pid' 现在就相当于在运行你的程序,再有问题就是你程序 bug,第三步的前提是你程序配置了 wsgi.py ,这个很简单,百度一下就有。

希望能帮到你~
xiaofengchen
2018-03-13 21:06:22 +08:00
@xiaofengchen 第三步的 gunicorn wsgi -c bind = '0.0.0.0:2000' pid = '/tmp/manager.pid' 端口 8000 是这样的
gunicorn wsgi -c bind = '0.0.0.0:8000' pid = '/tmp/manager.pid' 具体细节可百度,大概是这个思路,不过我一般是三二一,每一步没问题了才下一步。。
thulof
2018-03-13 21:06:23 +08:00
这句改一下,server = Server(host="0.0.0.0", port=8000) ,试试
ipwx
2018-03-13 21:20:40 +08:00
话说,@sevenQu 你虽然用了 gunicorn 但是你 nginx 没用 wsgi 协议诶,nginx 配置的是假设 8000 为 http 协议。

https://docs.nginx.com/nginx/admin-guide/web-server/app-gateway-uwsgi-django/
sevenQu
2018-03-13 22:46:50 +08:00
@xiaofengchen
很开心,按照你的 321 的步骤走,gunicorn 使用命令行启动成功了,ngnix 也可以了,网站成功走起
但是 gunicorn 命令行启动后,那个命令窗口好像不能继续使用了

我之前看的教程是使用 supervision 通过 gunicorn 配置文件启动的,不知道为什么用配置文件启动不了,我很纳闷,这是 supervision 的配置文件

[program:niceblog]
command=/home/seven/.pyenv/versions/daily/bin/gunicorn run:app -c /home/seven/Desktop/niceblog/gunicorn.conf
diretory=/home/seven/Desktop/niceblog
user=root
autostart=true
autorestart=true
tdout_logfile=/home/seven/Desktop/niceblog/logs/gunicorn_supervisor.log


gunicorn 的配置文件很简单
workers=3
bind='127.0.0.1:8000'

感觉关键是 supervision 的 command 那一行
/home/seven/.pyenv/versions/daily/bin/gunicorn 这是我用 pyenv 搭建的 flask 环境,gunicorn 所在位置

求解,谢谢
lightening
2018-03-13 22:53:04 +08:00
@sevenQu 你要从非本机访问的话,gunicorn 要 bind 0.0.0.0:8000 吧。127.0.0.1 只能从服务器本机访问。
POPOEVER
2018-03-15 10:24:46 +08:00
前两天正好在写在 CentOS 上跑 Node/Express 应用的一个快速指南,本来想可能大家都知道就不写了,看来我们都是从小白白赤手空拳过来的,还是有这类需求的是吧,哈哈

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

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

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

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

© 2021 V2EX