Назад | Перейти на главную страницу

Проблемы обратного прокси nginx с вышестоящим сервером

Я пытаюсь настроить обратный прокси-сервер nginx для своей компании, сейчас я нахожусь на стадии тестирования. Это схема, какая у меня временная.

клиент --- https -> nginx (VM1) --- https -> backend (IIS 8) (VM2)

Мой файл nginx.conf.

пользователь nginx;

worker_processes auto;

worker_rlimit_nofile 32768;

error_log /var/log/nginx/error.log предупреждать;

pid /var/run/nginx.pid;

События {

worker_connections  32768;

}

http {

include       /etc/nginx/mime.types;

default_type  applierveation/octet-stream;

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log main buffer=32k flush=1m;

include /etc/nginx/conf.d/rproxy.conf;

}

Мой rproxy.conf

upstream my_https_servers {

# upstream server on private ip 10.X.X.X
# upstream server have my own ssl certificate create with my own CA.
server domtest1.testdomain.com:443;
keepalive 128;

}

server {

listen 1.2.3.4:80; #public ip address
server_name test.mydomain.com www.test.mydomain.com;
return 301 https://test.mydomain.com$request_uri;

}

server {

listen 1.2.3.4:443 ssl http2;
server_name test.mydomain.com;

#I was extract certificate and key from trusted CA signed wild certificate.
ssl_certificate /etc/nginx/ssl/testmydomain.crt;
ssl_certificate_key /etc/nginx/ssl/testmydomain.key;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/nginx/ssl/globalsign.pem;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers on;

gzip on;
gzip_comp_level 5;
gzip_vary on;
gzip_proxied any;
gzip_buffers 16 8k;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

location / {
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 X-Forwarded-Proto $scheme;
add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload';
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options: nosniff;
add_header 'Referrer-Policy' 'no-referrer-when-downgrade';
add_header Feature-Policy "geolocation none;midi none;notifications none;push none;sync-xhr none;microphone none;camera none;magnetometer none;gyroscope none;speaker self;vibrate none;fullscreen self;payment none;";
}

}

Первая проблема - когда я подключаюсь из своего браузера, браузер предупреждает меня о ненадежном сертификате, который размещен на моем вышестоящем сервере, и игнорирует доверенный сертификат на обратном прокси-сервере.

Вторая проблема заключается в том, что HSTS не применяется с моего обратного прокси, но также с моего восходящего сервера.

Если у вас есть совет, я был бы признателен. Если вам что-то еще нужно о серверах, просто спросите.

С уважением Борис