LINUX.ORG.RU
ФорумAdmin

Проблема с Nginx + SSL

 , , ,


1

2

Доброго дня, коллеги.

Для начала краткое описание системы. Есть домен domain.tld и множество поддоменов subdomains.domain.tld. Все A-записи в ДНС указывают на один и тот же IP a.b.c.d. Возникла потребность отдавать один поддомен по https - скажем secure.domain.tld. При этом все остальные поддомены и основной домен должны быть доступны только по http. Добавил для этого конфиг с сертификатом только для этого поддомена, после чего все остальные поддомены и основной домен стали доступны по https с невалидным сертификатом. Nginx используется в качестве reverse proxy для приложения на IIS.

Собственно вопрос - почему так происходит и что я сделал не так? Помогите, плиз, разобраться.

Заранее спасибо.

nginx -V:

nginx version: nginx/1.7.7 
built by gcc 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 
TLS SNI support enabled 

Конфиги

domain.tld + subdomains.domain.tld:

server { 
listen 80; 
server_name domain.tld; 
root /var/www; 
gzip on; 
gzip_disable "msie6"; 
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript; 
include /etc/nginx/custom.conf.d/headers.conf; 

location = /SomeFolder/ { 
proxy_connect_timeout 3600; 
proxy_send_timeout 3600; 
proxy_read_timeout 3600; 
send_timeout 3600; 
proxy_pass http://app-01; 
} 
location ~* ^authors$ { 
try_files $uri @addslash; 
} 
location @addslash { 
return 301 $uri/; 
} 
location / { 
error_page 404 /40x.html; 
error_page 500 502 503 504 @maintenance; 
include /etc/nginx/custom.conf.d/cache.conf; 
include /etc/nginx/custom.conf.d/rewrite.conf; 
proxy_pass http://webfarm; 
} 
location /40x.html { 
root /var/www; 
} 
location @maintenance { 
rewrite ^(.*)$ /50x.html break; 
} 
} 

server { 
listen 80; 
server_name www.domain.tld; 
return 301 http://domain.tld$request_uri; 
} 

server { 
listen 80; 
server_name ~^(?<subdomain>.+)\.domain\.tld$; 
gzip on; 
gzip_disable "msie6"; 
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript; 
include /etc/nginx/custom.conf.d/headers.conf; 
location / { 
error_page 500 502 503 504 @maintenance; 
proxy_pass http://webfarm; 
} 
location @maintenance { 
rewrite ^(.*)$ /50x.html break; 
} 
} 

secure.domain.tld:

server { 
listen 443 ssl; 
server_name secure.domain.tld; 
ssl_certificate /etc/ssl/certs/secure_domain_tld/secure_domain_tld.pem; 
ssl_certificate_key /etc/ssl/private/secure_domain_tld.key; 
ssl_session_cache shared:SSL_secure_domain_tld:20m; 
ssl_session_timeout 180m; 
ssl_prefer_server_ciphers on; 
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5; 
ssl_dhparam /etc/ssl/dhparams_2048.pem; 
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
add_header Strict-Transport-Security "max-age=31536000" always; 
include /etc/nginx/custom.conf.d/headers.conf; 
location / { 
proxy_pass http://app-01/some_dir/some_subdir/script.aspx; 
} 
} 

nginx.conf:

user www-data; 
worker_processes 8; 
worker_rlimit_nofile 2048; 
error_log /var/log/nginx/error.log notice; 
pid /var/run/nginx.pid; 
events { 
worker_connections 2048; 
multi_accept on; 
use epoll; 
} 
http { 
include /etc/nginx/mime.types; 
default_type application/octet-stream; 
log_format main '$remote_addr - $remote_user [$time_local] $status ' '<<< UPSTREAM: $upstream_addr >>> ' '"$request" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; 
server_tokens off; 
sendfile on; 
tcp_nopush on; 
keepalive_timeout 65; 
tcp_nodelay on; 
gzip off; 
include /etc/nginx/conf.d/*.conf; 
include /etc/nginx/sites-enabled/*; 
geoip_city /etc/nginx/GeoIPCity.dat; 
access_log off; 
rewrite_log off; 
push_stream_shared_memory_size 1500m; 
push_stream_max_channel_id_length 200; 
push_stream_max_messages_stored_per_channel 2000; 
push_stream_message_ttl 10m; 
push_stream_ping_message_interval 10s; 
push_stream_subscriber_connection_ttl 15m; 
push_stream_longpolling_connection_ttl 5m; 
push_stream_timeout_with_body off; 
push_stream_authorized_channels_only off; 
push_stream_allowed_origins "*"; 
push_stream_wildcard_channel_prefix "broad_"; 
push_stream_wildcard_channel_max_qtd 3; 
push_stream_message_template "{\"id\":~id~,\"channel\":\"~channel~\",\"text\":\"~text~\", \"tag\":\"~tag~\", \"time\":\"~time~\", \"eventid\":\"~event-id~\"}"; 
}

Попробуйте в директории /etc/nginx/conf.d/ создать файл _base.conf с содержимым:

server {
	listen       80;
	listen       443 ssl;
       	return 404;
}

Ink0gnit0 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.