Сервер Nginx по умолчанию всегда выбран - несколько серверов SSL
У меня есть 3 сервера, определенных в Nginx (который используется для обслуживания статического содержимого и в качестве прокси для tomcat):
Одна обработка необработанных запросов:
server {
listen 443 default_server;
return 444;
}
Один для веб-приложения A:
server {
listen 443;
server_name webAppA;
ssl on;
ssl_certificate /etc/nginx/ssl/webAppA/server.crt;
ssl_certificate_key /etc/nginx/ssl/webAppA/server.key;
index index.html;
root /var/www/webAppA/;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
location / {
try_files $uri $uri/ /index.html;
}
location /ws/ {
add_header Cache-Control no-cache;
proxy_pass http://localhost:8080/webAppA/ws/;
proxy_set_header X-Real-IP $remote_addr;
}
}
Один для веб-приложения B:
server {
listen 443;
ssl on;
ssl_certificate /etc/nginx/ssl/webAppB/server.crt;
ssl_certificate_key /etc/nginx/ssl/webAppB/server.key;
server_name webAppB
index index.html;
root /var/www/webAppB/;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
location /ws/ {
add_header Cache-Control no-cache;
proxy_pass http://localhost:8080/webAppB/ws/;
proxy_set_header X-Real-IP $remote_addr;
}
location / {
#auth_basic "Restricted";
#auth_basic_user_file htpasswd;
try_files $uri $uri/ /index.html;
}
}
Я пытаюсь получить доступ к обоим приложениям с:
https://server_ip/webAppA
https://server_ip/webAppB
Но сервер по умолчанию всегда выбран. У меня включена поддержка TSI SNI.
Я пытался добавить имена серверов в /etc/hosts, но это ничего не меняет.
Есть ли у вас какие-либо идеи?
Большое спасибо:)
1 ответ
Решение
Основным решением было создать один сервер, так как имя_сервера относится к
"https://server_ip"
а не "wabAppA" или "webAppB".
server {
listen 443;
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
root /var/www/;
location /webAppA/ {
try_files $uri $uri/ /webAppA/index.html;
}
location /webAppB/ {
try_files $uri $uri/ /webAppB/index.html;
}
location /webAppA/ws/ {
add_header Cache-Control no-cache;
proxy_pass http://localhost:8080/webAppA/ws/;
proxy_set_header X-Real-IP $remote_addr;
}
location /webAppB/ws/ {
add_header Cache-Control no-cache;
proxy_pass http://localhost:8080/webAppB/ws/;
proxy_set_header X-Real-IP $remote_addr;
}
}
Это не так гибко, как хотелось бы, но это работает.