Обратный прокси-сервер Nginx не работает, если местоположение не `/` с pypiserver
Я пытаюсь получить пользовательский сервер PyPI, работающий с использованием pypiserver.
Я пытался изменить пример nginx.conf
файл в README для использования /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
был в основном способ сказать "Подключение к mypi.com/mylocation
такой же как mypi.com:8080/
". Я понял это неправильно? Или проблема связана с pypiserver
сам?
Если это поможет, я на Raspberry Pi со следующими версиями программ:
- nginx: 1.12.2
- pypiserver: 1.2.1
- питон: 3.6.5
1 ответ
Блок местоположения с proxy_pass
просто проходит по пути без изменений, если вы rewrite
Это.
Для вашего случая добавьте следующее правило переписывания после proxy_pass
заявление.
rewrite ^/mylocation/?(.*)$ /$1 break;