如果位置不是 pypiserver 的“/”,则 Nginx 反向代理失败
Nginx reverse proxy fails if location is not `/` with pypiserver
我正在尝试使用 pypiserver.
获取自定义 PyPI 服务器 运行
我试图修改 README 中的示例 nginx.conf
文件以使用 /mylocation
而不是 /
,结果如下:
server {
server_name mypi.com;
listen 443 ssl;
ssl_certificate /cert/path;
ssl_certificate_key /key/path;
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
location /mylocation {
auth_basic "Howdy!";
auth_basic_user_file /path/to/pwd;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass 127.0.0.1:8080/;
}
}
如果我直接(通过浏览器)连接到 http://mypi.com:8080
,则会弹出 pypiserver
的默认欢迎页面。如果我改为尝试连接到 https://mypi.com/mylocation
,它会将我重定向到 https://mypi.com/simple/
并抛出 404
错误。我认为 location
+ proxy_pass
的组合基本上是 "Connecting to mypi.com/mylocation
is the same as mypi.com:8080/
" 的一种表达方式。我弄错了吗?还是问题与 pypiserver
本身有关?
如果有帮助,我正在 Raspberry Pi 使用以下程序版本:
- nginx: 1.12.2
- pypiserver: 1.2.1
- python: 3.6.5
具有 proxy_pass
的位置块只是通过路径不变,除非你 rewrite
它。
对于您的情况,在 proxy_pass
语句后添加以下重写规则。
rewrite ^/mylocation/?(.*)$ / break;
我正在尝试使用 pypiserver.
获取自定义 PyPI 服务器 运行我试图修改 README 中的示例 nginx.conf
文件以使用 /mylocation
而不是 /
,结果如下:
server {
server_name mypi.com;
listen 443 ssl;
ssl_certificate /cert/path;
ssl_certificate_key /key/path;
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
location /mylocation {
auth_basic "Howdy!";
auth_basic_user_file /path/to/pwd;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass 127.0.0.1:8080/;
}
}
如果我直接(通过浏览器)连接到 http://mypi.com:8080
,则会弹出 pypiserver
的默认欢迎页面。如果我改为尝试连接到 https://mypi.com/mylocation
,它会将我重定向到 https://mypi.com/simple/
并抛出 404
错误。我认为 location
+ proxy_pass
的组合基本上是 "Connecting to mypi.com/mylocation
is the same as mypi.com:8080/
" 的一种表达方式。我弄错了吗?还是问题与 pypiserver
本身有关?
如果有帮助,我正在 Raspberry Pi 使用以下程序版本:
- nginx: 1.12.2
- pypiserver: 1.2.1
- python: 3.6.5
具有 proxy_pass
的位置块只是通过路径不变,除非你 rewrite
它。
对于您的情况,在 proxy_pass
语句后添加以下重写规则。
rewrite ^/mylocation/?(.*)$ / break;