2016-04-11 6 views
0

У меня возникает сомнение в настройке nginx для перенаправления трафика HTTPS, полученного на пользовательский порт, на тот же номер настраиваемого порта целевого URL-адреса. Мое дело приводится ниже.Настройка nginx для разрешения трафика HTTPS на настраиваемом порту

  1. У меня есть VPC в AWS. Я запускаю nginx на сервере NAT (экземпляр Bastion в моем случае), который получает трафик HTTPS.
  2. Мой экземпляр приложения в VPC является местом назначения запросов, отправленных nginx. Он имеет два настраиваемых поддомена, один для односторонней аутентификации SSL, а другой для двухсторонней аутентификации SSL.
  3. Я обслуживаю URI, имеющий двустороннюю аутентификацию на пользовательском порту, а не 443. URI, имеющие службы, запущенные на порту 443, используют одностороннюю SSL-аутентификацию (аутентификацию сервера).
  4. В моем конфигурационном файле nginx я прослушиваю этот пользовательский порт, чтобы получить запросы HTTPS, перенаправленные на тот же пользовательский порт в приложении-приложении, после того, как было выполнено квитирование SSL. Но я заметил, что после этапа рукопожатия он был перенаправлен на порт 443 по умолчанию приложения-экземпляра.
  5. Пакеты HTTPS отправляются с использованием объекта HTTPBuilder, доступного в Java/Groovy, после настройки схемы HTTPS.

Конфигурация Nginx образец, который я использую дается здесь:

server { 
listen 8000; 
server_name myserver.com; 
ssl on; 
    ssl_certificate  /path/to/server/cert; 
    ssl_certificate_key /path/to/server/key; 
    ssl_client_certificate /path/to/client/cert; 
    ssl_verify_client on; 
#https requests to this URI gets redirected to port 443 by default 
location /customUri1 { 
     # switch off logging 
     access_log off; 
     proxy_pass http://app-instance-ip:8080; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header Host $host; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header X-Forwarded-Proto https; 
    } 
} 
server { 
listen 443; 
server_name myserver.com; 
ssl on; 
    ssl_certificate  /path/to/server/cert; 
    ssl_certificate_key /path/to/server/key; 
location /customUri2 { 
     # switch off logging 
     access_log off; 
     proxy_pass http://app-instance-ip:8080; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header Host $host; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header X-Forwarded-Proto http;  
    } 
} 

Есть ли какой-либо механизм конфигурации Nginx, который мог бы позволить мне посылать запросы HTTPS на пользовательский порт на приложение инстанции? Благодарю.

ответ

0

Я нашел проблему. Это было с тем, как я отправлял HTTPS-пакеты на сервер. В моем коде Groovy поле uri.port HTTPBuilder было установлено равным 443, а не 8000. После замены 8000 мой клиент может отправить сообщение на сервер.

+0

Как вам удалось использовать клиентские сертификаты с вашим отличным кодом? –

Смежные вопросы