在 nginx 的 80 端口上显示静态文件,并在不同的端口上进行反向代理

在 nginx 的 80 端口上显示静态文件,并在不同的端口上进行反向代理

在写这篇文章之前,我阅读了很多关于反向代理 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/uploadnginxserver/upload

相关内容