В настоящее время у меня есть установка nginx для моего сервера в my.server.com
. Используя текущую конфигурацию, я получаю доступ к различным приложениям, используя http://my.server.com/app1
или http://my.server.com/app2
.
у меня есть apps.conf
помещен в /etc/nginx/sites-enabled/
вот как это выглядит:
upstream app1_servers {
server 172.12.11.10:8080;
}
upstream app2_servers{
server 172.12.11.10:9090;
}
server {
listen 80;
server_name my.server.com;
return 301 https://my.server.com/$request_uri; #force https
}
server {
listen 443;
ssl on;
ssl_certificate /etc/ssl/my.server.com/cert.pem;
ssl_certificate_key /etc/ssl/my.server.com/priv.pem;
server_name my.server.com;
location /app1 {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto https;
proxy_pass http://app1_servers/app1;
proxy_redirect http://$host https://$host;
proxy_set_header Host $host;
}
location /app2 {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto https;
proxy_pass http://app2_servers/app2;
proxy_redirect http://$host https://$host;
proxy_set_header Host $host;
}
}
Вопрос
Вышеуказанное работает нормально. Однако теперь я хотел бы изменить способ доступа app1
и app2
. Я хотел бы получить к ним доступ через http://app1.my.server.com
и http://app2.my.server.com
при этом сохраняя силу ssl и делая proxy_pass
Какие изменения конфигурации мне нужно внести, чтобы это вступило в силу? Кроме того, я хотел бы сохранить параметры конфигурации для каждого приложения в отдельном файле.
Это должно быть довольно просто. Вам просто нужно создать серверные блоки для каждого поддомена, получить сертификат SSL для поддомена (если только основной сертификат не является сертификатом с подстановочными знаками) и скопировать соответствующие блоки местоположения с помощью пары настроек.
Что-то вроде этого должно работать, хотя я не тестировал это, поэтому почти наверняка потребуется некоторая настройка.
server {
listen 80;
server_name app1.server.com;
return 301 https://app1.server.com/$request_uri; #force https
}
server {
listen 443;
ssl on;
ssl_certificate /etc/ssl/app1.server.com/cert.pem; # changed
ssl_certificate_key /etc/ssl/app1.server.com/priv.pem; # changed
server_name app1.server.com; # changed
location / { # changed
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto https;
proxy_pass http://app1_servers/app1;
proxy_redirect http://$host https://$host;
proxy_set_header Host $host;
}