在写这篇文章之前,我阅读了很多关于反向代理 nginx 的帖子......
我正在位置 / 和其他子目录上显示静态文件,这些文件可以正常工作,但我想让位置 /upload 命中在端口 8000 上运行的单独应用程序,但这不起作用。
$ nginx -v
nginx version: nginx/1.12.2
我在家庭用户下以端口 8000 运行一个简单的 Web 服务器。它包含一个upload
目录,其中包含一个小文件。
$ python -m SimpleHTTPServer 8000
我的配置
server {
// start default settings
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
// end default settings
// show directory contents minus size if index not found
autoindex on;
autoindex_exact_size off;
location / {
root /usr/share/nginx/html;
}
location /upload {
proxy_pass http://127.0.0.1:8000;
}
}
我检查了 /var/log/nginx/error.log,它似乎获取了路由并确认选择了正确的上游,然后返回权限被拒绝。
2018/04/19 22:56:43 [错误] 8960#0: *547 open() "/usr/share/nginx/html/50x.html" 失败 (2: 没有此文件或目录),客户端:xxxx,服务器:_,请求:“GET /upload/HTTP/1.1”,上游:“http://127.0.0.1:8000/upload/", 主机: "example.domain.com"
我可以从服务器本地访问,但无法从服务器外部访问127.0.0.1:8000
并让其反向代理到 python 脚本。127.0.0.1:8000/upload
nginxserver/upload