Как сделать nginx на 443 и перенаправить 80 на 443?
У меня есть сервер winstone (Jenkins), который прослушивает 8443. У Jenkins есть действующий сертификат, и Jenkins успешно завершает сертификат:
JENKINS_ARGS="--httpPort=-1 --httpsKeyStore=/secure/jenkins.keystore --httpsKeyStorePassword=MY_PASSWORD --httpsPort=8443"
Единственная проблема заключается в том, что пользователи теперь должны идти: https://example.com:8443/
Я не хочу этот номер порта в URL. Я хочу:
https://example.com:8443 -> https://example.com
https://example.com -> https://example.com
http://example.com -> https://example.com
Поэтому я решил запустить nginx на том же экземпляре, где работает Jenkins.
Итак, мой вопрос:
- Должен ли я перенастроить jenkins, чтобы НЕ делать завершение сертификата, чтобы nginx делал это только?
- Может ли nginx перенаправить 80 и 443 на локальный хост: 8443 без сертификата (поскольку Дженкинс выполняет заверение сертификата)?
- Нужно ли обоим nginx и Jenkins завершать сертификацию?
Извините за эти похожие вопросы.
Я почти уверен, что AWS ELB не сможет заменить то, что делает здесь nginx, но я подумал, что выложу это на тот случай, если ELB может решить и это для меня.
1 ответ
1) Нет, вы можете настроить Nginx Stream напрямую на Jenkins, используя Stream Stream.
Обратите внимание, что это было добавлено в 1.9.0, но не является частью сборки по умолчанию, поэтому вам, возможно, придется собирать ее самостоятельно.
Это работает очень похоже на http
server
блок, но вы должны установить его за пределами http
блок.
stream {
upstream jenkins_server {
server jenkins:443;
}
server {
listen 443;
proxy_pass jenkins_server;
}
}
2) Вам не нужен сертификат на nginx
но вы должны иметь http
блок сервера для порта 80, который выполняет поток 301 для 443, о котором говорилось в части 1 ответа.
server {
listen 80;
server_name your_server_name_here;
return 301 https://$host$request_uri;
}
3) Нет, вы не можете использовать поток nginx для передачи ssl от клиента к серверу Jenkins.