#nginx #config #synology
#nginx #конфигурация #synology
Вопрос:
Я пытаюсь настроить nginx (на основе bitname / nginx: latest) как эквивалент Synology reverse proxy. Это связано с отсутствием перенаправления с использованием подстановочных знаков в Synology. При этом я сталкиваюсь со многими проблемами; поэтому я прошу помощи для правильной настройки nginx.
требования
- Обновление HTTPS
- Перенаправить любой поддомен с подстановочными знаками (443) на порт 30’000
- Скрыть порт перенаправления от видимости пользователя
- Должны поддерживаться веб-узлы (в следующем заголовке Synology: обновление $ http_upgrade И подключение $connection_upgrade)
Пример
- Вызовы браузера http://app1.my-example.com /
- перенаправить на http s://app1.my-example.com:30000/
- Браузер отображает: https://app1.my-example.com /, разрешение через порт 30000
Текущий код (пока не работает)
# Test
server {
listen 8080;
server_name ~^(.*).my-example.com$;
access_log /opt/bitnami/nginx/logs/yourapp_access.log;
error_log /opt/bitnami/nginx/logs/yourapp_error.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass https://$host:30000$request_uri/;
proxy_redirect off;
}
}
# Catch malicious requests
server {
listen 8080 default_server;
listen [::]:8080 default_server;
server_name _;
return 444;
}
Ответ №1:
Я смог решить свою проблему и хотел бы поделиться результатами. Единственное, чего я не понимаю, так это зачем перенаправлять.my-example в порядке как proxy_pass. Это привело бы к тому же самому маршруту (вероятно, бесконечному циклу). Обратная связь / улучшение будут оценены!
# custom code for hop by hop headers
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
# Upgrade connection
server {
listen 8080 default_server;
listen [::]:8080 default_server;
server_name _;
return 301 https://$host$request_uri;
}
# Redirect Subdomains (incl. Web-Socket)
server {
listen 8443 ssl;
ssl_certificate /certs/server.crt;
ssl_certificate_key /certs/server.key;
server_name my-example.de portal.my-example.de;
access_log /opt/bitnami/nginx/logs/yourapp_access.log;
error_log /opt/bitnami/nginx/logs/yourapp_error.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_pass https://redirect.my-example.de:30000;
proxy_redirect off;
}
}
# Catch malicious requests
server {
listen 8443 default_server;
listen [::]:8443 default_server;
ssl_certificate /certs/server.crt;
ssl_certificate_key /certs/server.key;
server_name _;
return 444;
}