2017-01-02 7 views
1

У меня есть небольшая сложная конфигурация служб.Конфигурация Nginx для передачи прокси на внешний ip и порт (https -> http)

Мой домен (назовите его «a.team» пока) указывает на мой 1 & 1 Сервер облаков с различными службами, работающими доклерными, полностью функциональными с докционированным nginx. Многие субдомены указывают на контейнеры докеров, и все в порядке.

Теперь у меня есть сервер в офисе, порты 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; 
} 

И я хочу добавить новую конфигурацию в существующие.

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

    location/{ 
     proxy_pass http://---.---.---.133:8080; 
     proxy_redirect off; 
    } 
} 

Я перепробовал много комбинаций с прокси-набор заголовков для хоста, X-Real-IP и х-пересылаемой-за, но все это я получаю тайм-аут 504 шлюз.

Благодарим за помощь!

С уважением

ответ

2

Попробуйте использовать функцию вверх по течению в Nginx.

Вы должны знать, что при прокси-прокси-переходе на внешний адрес вам необходимо разрешить исходящий трафик на эти порты в офисе FW, поскольку трафик будет проходить через сервер Nginx.

Настройка сервера (ВХост 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; 
} 

Настройка вверх по течению

upstream jira_app { 
    server  ---.---.---.133:8080 fail_timeout=10s; 
} 

Если вы все еще хотите использовать перенаправление с HTTP на HTTPs вы можете выполните следующие действия в качестве отдельного объекта сервера:

server {                                     
listen *:80;                                   
server_name   jira.a.team;                            
location/{                                                             
    rewrite^https://jira.a.team$request_uri? permanent;                        
}                                      
}    
+2

Большое спасибо! Оно работает! – Dommar92