#nginx #reverse-proxy
#nginx #обратный прокси
Вопрос:
Я настроил обратный прокси-сервер nginx в соответствии с приведенными здесь инструкциями:https://medium.com/@mightywomble/how-to-set-up-nginx-reverse-proxy-with-lets-encrypt-8ef3fd6b79e5
My sites-enabled /mysite.conf выглядит следующим образом
server {
server_name mynginxreverseproxy.com;
set $upstream serverip:$server_port/;
location / {
proxy_pass_header Authorization;
proxy_pass http://$upstream;
proxy_set_header Host $host;
proxy_set_header X-Real-IP
$remote_addr;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Connection “”;
proxy_buffering off;
client_max_body_size 0;
proxy_read_timeout 36000s;
proxy_redirect off; }
listen 443 ssl; # paths to ssl cert files
} server {
if ($host = mynginxreverseproxy.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name mynginxreverseproxy.com; listen 80;
return 404;
}
Я хотел бы перенаправить порт и путь на мой сервер, напримерhttps://mynginxreverseproxy.com:portnumber/myurl -> к serverip:com:portnumber/myurl. Я смог заставить это работать для одного порта, который может перенаправлять порт 80 на мой нужный порт, но как мне масштабировать его, чтобы он работал для многих портов?
У меня есть много сопоставлений портов, которые я хотел бы настроить, поэтому было бы идеально сделать это с помощью переменной, а не жестко кодировать каждое сопоставление портов.
Как мне передать порт и путь с помощью переменной в файле conf?
Ответ №1:
В конце концов, я заставил это работать после множества отладок и настроек.
The
set $upstream serverip:$server_port
было правильно, но мне не хватало
listen
директива, которая позволяет серверу NGINX прослушивать определенный порт, по умолчанию он прослушивает порт 80. Однако порт 80 не был тем портом, который я хотел передать на вышестоящий сервер.
Ответ №2:
Возможно, кому-то это покажется полезным, есть онлайн-утилита, где вы можете сгенерировать конфигурацию nginx. Очень удобный для пользователя
Вы можете найти это здесь
Ответ №3:
Другой способ сделать это (пример конфигурации ниже)
upstream myserver {
server ip-address:port;
}
server {
listen 80; //IPv4
listen [::]:80; //IPv6
location / {
proxy_pass http://myserver /;
proxy_set_header Host $http_host;
...rest of your headers...
}
}