我在Linux机器上运行Nginx和uwsgi,但我必须将代码移植到Windows。所以我选择了CherryPy来重写我的代码,但是我有问题,因为我不知道如何阻止直接访问CherryPy端口8080并仍然在Nginx中启用反向代理。
这是我的配置
nginx的:
upstream apps {
server 127.0.0.1:8080;
}
server {
listen 80;
listen [::]:80;
root /var/www/html;
index index.htm index.html index.nginx.html;
server_name localhost;
merge_slashes off;
large_client_header_buffers 4 64k;
location / {
allow 127.0.0.1;
deny all;
try_files $uri $uri/ =404;
proxy_pass http://apps;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
这是我的Cherrypy配置:
_config = {
'global' : {
# http server
'server.socket_host' : "127.0.0.1",
'server.socket_port' : 8080,
'server.thread_pool' : 8,
# file change reload
'engine.autoreload_on' : False,
# url trailing slash
'tools.trailing_slash.on' : False,
# logging
'log.access_file' : os.path.join(_path, "variable/log/access_back.log"),
'log.error_file' : os.path.join(_path, "variable/log/error_back.log"),
},
'/' : {
'tools.encode.encoding' : "utf-8"
}
}
编辑:
我发现我在启用网站时链接了错误的neginx配置,这就是我可以从我的局域网访问8080的原因。我的大坏处:(后来我纠正了这个,这些配置都适合我,所以我从一开始就得到了答案。
答案 0 :(得分:1)
这个'server.socket_host' : "127.0.0.1",
表示CherryPy已经只监听你的loopback接口,并且不会在其他接口上提供连接。换句话说,只能通过端口8080从运行它的机器上访问它。