如何在443上进行nginx passthrough并将80重定向到443?

时间:2017-11-16 22:13:16

标签: ssl redirect nginx winstone

我有一个winstone服务器(Jenkins)在8443上收听。 Jenkins拥有有效的证书,Jenkins正在成功完成证书终止:

https://example.com:8443 -> https://example.com
https://example.com      -> https://example.com
http://example.com       -> https://example.com

唯一的问题是用户现在必须去: https://example.com:8443

我不希望URL中有该端口号。 我想要:

ID; Text_1; Points_1; Text_2; Points_2
1; "Hello world one"; 33; "Hello world two"; 90
2, "Goodbye world one"; 44; "Goodbye world two";100

所以我想我会在运行Jenkins的同一个实例上运行nginx。

所以我的问题是:

  1. 我是否必须将jenkins重新配置为不进行证书终止,以便nginx只执行此操作?
  2. nginx可以将80和443重定向到localhost:8443没有证书(因为Jenkins正在进行证书终止)?
  3. nginx和Jenkins是否需要终止证书?
  4. 对不起那些类似的问题。

    我很确定AWS ELB无法取代nginx在这里所做的事情,但我想我会把它丢掉,以防ELB也可以为我解决这个问题。

1 个答案:

答案 0 :(得分:1)

1)不,您可以使用Stream Module将Nginx Stream直接连接到Jenkins。

请注意,这是在1.9.0中添加的,但不是默认构建的一部分,因此您可能必须自己构建

它与http server块非常相似,但您必须在http块之外进行设置。

stream {
    upstream jenkins_server {
        server jenkins:443;
    }

    server {
        listen 443;
        proxy_pass jenkins_server;
    }
}

2)您不需要nginx上的证书,但是您应该为端口80设置一个http服务器块,在回答第1部分中讨论的是443流的301。

server {
    listen 80;
    server_name your_server_name_here;
    return 301 https://$host$request_uri;
}

3)不,你没有,因为你可以使用nginx流将ssl从客户端传递到Jenkins服务器。