Мой веб-сервер поддерживает следующие два поддомена:
Я хочу создать свою конфигурацию nginx так, чтобы:
Я не смог найти в Интернете никакого решения, решающего эту проблему. Может ли кто-нибудь помочь мне с правильной конфигурацией nginx.
Прежде всего, вы должны понимать, что вы не можете сделать «прозрачное» перенаправление https с https://something.example.com
к https://www.example.com
если ваш сертификат SSL не поддерживает something.example.com
домен. Это покажет Your connection is not secure
ошибка или подобное, при доступе. Однако вы должны иметь возможность перенаправлять с http://*.example.com
к https://www.example.com
без проблем. Для этого добавьте следующее поверх своего nginx.conf
:
server {
listen 80;
default_server;
server_name _;
return 301 https://www.example.com$request_uri;
}
Он должен перенаправлять любой запрос на ваш IP-адрес на https://www.example.com
Затем мы добавляем конфигурации для определенных перенаправлений. Этот для http://en.example.com
-> https://en.example.com
:
server {
listen 80;
server_name en.example.com;
return 301 https://en.example.com$request_uri;
}
Этот для http://www.example.com
-> https://www.example.com
:
server {
listen 80;
server_name www.example.com;
return 301 https://www.example.com$request_uri;
}
И, наконец, мы добавляем конфигурацию для «реальных» доменов, которые должны обслуживать желаемый контент через SSL. Этот для http://www.example.com
:
server {
listen 443 ssl;
ssl_certificate /etc/ssl/www.example.com.crt;
ssl_certificate_key /etc/ssl/www.example.com.key;
server_name www.example.com;
<your www.example.com server config here>
...
</your www.example.com server config here>
}
Этот для http://en.example.com
:
server {
listen 443 ssl;
ssl_certificate /etc/ssl/en.example.com.crt;
ssl_certificate_key /etc/ssl/en.example.com.key;
server_name en.example.com;
<your en.example.com server config here>
...
</your en.example.com server config here>
}