Я понимаю, что это похоже на дублирование, по крайней мере, нескольких других вопросов, но я прочитал их каждый несколько раз и все еще делаю что-то не так.
Ниже приводится содержимое моего конфигурационного файла myexample.com nginx, расположенного в /etc/nginx/sites-available
.
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name myexample.com www.myexample.com;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;
#Configures the publicly served root directory
#Configures the index file to be served
root /var/www/myexample.com;
index index.html index.htm;
}
Это работает, когда я иду в https://myexample.com контент обслуживается, и соединение безопасно. Так что этот конфиг вроде хорош.
Теперь, если я изменю порт ssl на 9443 и перезагружу конфигурацию nginx, конфигурация перезагрузится без ошибок, но при посещении https://myexample.com показывает ошибку в браузере (этот сайт недоступен / myexample.com отказался подключиться. ERR_CONNECTION_REFUSED)
Я пробовал предложения и документацию Вот, Вот, и Вот (среди прочего), но я всегда получаю ошибку ERR_CONNECTION_REFUSED.
Следует отметить, что я могу использовать нестандартный порт, а затем явно ввести этот порт в URL-адрес, например, https://myexample.com:9443. Но я не хочу этого делать. Я хочу, чтобы пользователь мог вводить myexample.com в любом браузере и автоматически перенаправлять nginx на безопасное соединение.
Опять же, у меня нет никаких проблем, когда я использую стандартный порт SSL 443.
Редактировать: Я использую nginx / 1.6.2 на debian / jessie
Для поддержки набора текста "https://myexample.com"в вашем браузере, и имея дело с nginx
конфиг прослушивает порт 9443, вам понадобится дополнительный nginx
config, который по-прежнему прослушивает порт 443, поскольку это IP-порт, к которому подключается браузер..
Таким образом:
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name myexample.com www.myexample.com;
ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;
# Redirect the browser to our port 9443 config
return 301 $scheme://myexample.com:9443$request_uri;
}
server {
listen 9443 ssl;
listen [::]:9443 ssl;
server_name myexample.com www.myexample.com;
ssl_certificate /etc/letsencrypt/live/myexample.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/myexample.com/privkey.pem;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
#Configures the publicly served root directory
#Configures the index file to be served
root /var/www/myexample.com;
index index.html index.htm;
}
Обратите внимание, что для обоих разделов необходим один и тот же сертификат / ключ, поскольку сертификат обычно привязан к имени хоста DNS, но не обязательно к порту.
Надеюсь это поможет!
Когда вы печатаете https://example.comстандартным для схемы https: // является подключение к порту 443. В вашем случае вы переместили свой сервер так, чтобы он теперь прослушивал порт 9443. Вы получаете В соединении отказано сообщение из-за этого - порт 443 ничего не прослушивает.
Вам нужно будет организовать прослушивание порта 443, которое перенаправляет соединения на порт 9443 или использует порт как часть URL-адреса.
если вы измените порт на нестандартный, например, 9443, вам нужно добавить перенаправление с 443 на 9443. Настройте nginx на обратный прокси для этого порта.