Как сделать 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.

Итак, мой вопрос:

  1. Должен ли я перенастроить jenkins, чтобы НЕ делать завершение сертификата, чтобы nginx делал это только?
  2. Может ли nginx перенаправить 80 и 443 на локальный хост: 8443 без сертификата (поскольку Дженкинс выполняет заверение сертификата)?
  3. Нужно ли обоим nginx и Jenkins завершать сертификацию?

Извините за эти похожие вопросы.

Я почти уверен, что AWS ELB не сможет заменить то, что делает здесь nginx, но я подумал, что выложу это на тот случай, если ELB может решить и это для меня.

1 ответ

Решение

1) Нет, вы можете настроить Nginx Stream напрямую на Jenkins, используя Stream Stream.

Обратите внимание, что это было добавлено в 1.9.0, но не является частью сборки по умолчанию, поэтому вам, возможно, придется собирать ее самостоятельно.

Это работает очень похоже на httpserver блок, но вы должны установить его за пределами 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.

Другие вопросы по тегам