繁体   English   中英

Nginx 配置,如 Synology 反向代理

Nginx configuration like Synology reverse proxy

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试将 nginx(基于 bitname/nginx:latest)配置为等效于 Synology 反向代理。 这是因为在 Synology 中缺少通配符重定向。 在这样做的过程中,我面临着许多问题; 因此,我请求帮助以进行正确的 nginx 配置。

要求

  • HTTPS 升级
  • 将任何通配符子域 (443) 重定向到端口 30'000
  • 对用户可见性隐藏重定向端口
  • 必须支持 WebSockets(在 Synology 以下标题:升级 $http_upgrade AND Connection $connection_upgrade)

例子

当前代码(目前不工作)

# 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 个回复

我能够解决我的问题,并想分享结果。 我唯一不明白的是,为什么redirect.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;
}
1 nginx反向代理-Synology DSM问题

我目前在路由器上使用nginx充当反向代理,它具有单个服务器块和映射到NAS上特定端口的多个位置。 除了一项功能-Synology DSM以外,其他所有功能似乎都正常运行。 现在,在我的设置中我可以通过WAN访问DSM的唯一方法是使用以下配置: 我更喜欢这样的东西: 但是,我 ...

2 Nginx反向代理DNS配置

我希望在映射到不同地理位置的真实后端的vps代理上部署nginx / dns服务器。 后端运行apache,mysql,dovecot,postfix。 这是一个付费邮件服务器。 用户通过apache通过php通过php进入mysql,当用户设置IMAP时,dovecot / postfi ...

3 NGINX反向代理配置结构

NGINX 反向代理的指令是否有“适当”的结构? 在查找 NGINX 反向代理示例时,我发现了两个主要区别。 http指令用于容纳所有server指令。 带有数据的服务器列在upstream指令的池中。 server指令直接在main指令中列出。 有什么原因吗,或者这只是语法上的 ...

4 nginx websocket反向代理配置

嗨,我正在尝试将nginx配置为websockets的反向代理。 我将服务器配置如下: 但我从客户那里得到一个错误,如下 与'ws://www.application.com/ws'的WebSocket连接失败:WebSocket握手期间出错:'Connection'标头值不是' ...

5 keycloak (Nginx) 的反向代理配置

我有一个在端口 8000 上运行的 Spring Boot 应用程序(带有 keycloak 适配器)和在 8080 上运行的 keycloak 我编辑了我的 /etc/hosts 文件以将来自我的测试域 (foo.bar.com) 的请求路由到 127.0.0.1 到目前为止,我对 SSL 不 ...

6 Nginx反向代理配置问题

我已经在数字海洋飞沫的tomcat上部署了一个webapp war文件的结构为(Servelet是webapp名称) 现在在我的本地PC上,当我想访问它时,我会执行以下操作: 我在数字海洋上的tomcat上部署了相同的战争,但是这次连接了一个域:server.foodini ...

7 NGINX 的反向代理 CORS 配置

我有一个 nodejs 服务器和反应客户端应用程序部署到一个 ec2 实例。 当我尝试向 /api/emails 路由发送 POST 请求时,它会在控制台中返回 CORS / CORB 错误。 Cross-Origin Request Blocked: The Same Origin Policy ...

8 Docker的Nginx反向代理配置

我很难确定要在域中加载本地运行的dockerized Web应用程序的配置。 以下是: docker-compose.yml nginx / conf.d / ui.example.conf nginx.conf 它运行在本地计算机上的IP下的http://1 ...

9 nginx反向代理背后的Nginx配置

我的开发环境有一个带 Docker 的 Nginx,使用 HTTP 和 HTTPS,这是配置: 我想在本地环境中测试 HTTP 和 HTTPS,但在生产中,我在前面有一个 Nginx 反向代理: 我希望反向代理接受唯一的 HTTPS 并转发到应用程序 nginx 但我背后的 PHP 应用程序 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM