Nginx配置代理传递给外部ip和端口(https - > http)

Dom*_*r92 2 ssl https proxy redirect nginx

我有一些复杂的服务配置.

我的域名(暂时称之为"a.team")指向我的1&1云服务器,其中运行dockerized的不同服务具有dockerized nginx.许多子域指向docker容器,一切都很好.

现在我在办公室有一台服务器,端口8080,8090和7990(Atlassian产品)可以通过路由器fw和静态ip访问(工作正常).

我希望云服务器像这样管理域和代理:

SSL https://jira.a.team到非SSL http://---.---.--- 133:8080(虚拟)作为代理(以及其他产品)

Nginx配置为将所有http重定向到https:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;  
    return 301 https://$host$request_uri;
}
server {
    listen 443 default_server ssl;
    server_name _;
    ssl_certificate /path/bundle.cer;
    ssl_certificate_key /path/-.a.team_private_key.key;
}
Run Code Online (Sandbox Code Playgroud)

我想将新配置添加到现有配置中.

server {
    listen 443 ssl;
    server_name jira.a.team;

    location / {
        proxy_pass http://---.---.---.133:8080;
        proxy_redirect off;
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了许多与主机,x-real-ip和x-forwarded-for的代理集头的组合,但我得到的是504网关超时.

谢谢你的帮忙!

问候

Hau*_*son 6

尝试使用Nginx中的上游功能.

您应该知道,当代理传递到外部地址时,您将需要允许传出流量到您办公室FW中的这些端口,因为流量将通过Nginx服务器.

配置服务器(vhost jira.a.team),记下上游引用 jira_app

server {
  listen       *:443 ssl;
  server_name  jira.a.team;
  ssl on;
  ssl_certificate           ....
  ssl_certificate_key       ....
  ssl_session_cache         ....
  ssl_session_timeout       5m;
  ssl_protocols             TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers               ....
  ssl_prefer_server_ciphers on;
  access_log            /var/log/nginx/....access.log combined;
  error_log             /var/log/nginx/....error.log;
  location / {
    proxy_pass            http://jira_app;
    proxy_read_timeout    90;
    proxy_connect_timeout 90;
    proxy_redirect        off;
    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_set_header      Proxy "";
  }
  proxy_set_header Host $http_host;
  proxy_set_header X-Forwarded-For $remote_addr;
  proxy_set_header X-Forwarded-Proto $scheme;   
}
Run Code Online (Sandbox Code Playgroud)

配置上游

upstream jira_app {
  server     ---.---.---.133:8080  fail_timeout=10s;
}
Run Code Online (Sandbox Code Playgroud)

如果您仍希望使用从HTTP到HTTP的重定向,则可以将以下内容作为单独的服务器对象执行:

server {                                                                                                                                                 
 listen *:80;                                                                                                                                           
 server_name           jira.a.team;                                                                                                               
 location / {                                                                                                                                                                                                                                                   
  rewrite ^ https://jira.a.team$request_uri? permanent;                                                                                            
 }                                                                                                                                                      
}               
Run Code Online (Sandbox Code Playgroud)