http自动转https配置(nginx)

公司目前使用的helm kong kubernetes ingress作为的api gateway。使用kong来做http自动跳https本身不难做到,https://github.com/Kong/kong/issues/1946#issuecomment-272970569。然鹅,和ingress以及helm挂钩之后,显得鹅外难配置。这里参考了其他博主的做法,配合公司使用的aws服务,最终解法如下。

图解

最普通的nginx反向代理:

@startuml web
interface ip
card "domain name 1" as dn1
card "domain name 2" as dn2
card "service 1" as s1
card "service 2" as s2
agent nginx

dn1 --> ip
ip --> nginx: "port:80/443"
nginx --> s1
dn2 -[#7FFFAA]-> ip
nginx -[#7FFFAA]-> s2
@enduml

解决方案

@startuml web
card "https:// domain name" as dn1
card "http:// domain name" as dn2
agent "aws load balance" as alb

rectangle kubernetes {
    agent "kong kubernetes ingress(api gateway)" as kki
    card "http2https services" as hs
}

dn1 --> alb: "port:443"
dn2 -[#7FFFAA]-> alb: "prot:80"

interface ip1
interface ip2
card "k8s node 1" as kn1
card "k8s node 2" as kn2
ip1 -- kn1
ip2 -- kn2

alb --> kki
kki -- ip1
kki -- ip2

alb -[#7FFFAA]-> hs
hs -[#7FFFAA]-> dn1
@enduml

⚠️注意,这里域名为同一个,可以有很多个,拿一个举例子

http2https服务

现在就是http至https服务的跳转了。
看到一篇博客提到通过html跳转,经典例子就是百度,

$ curl baidu.com -v

得到内容

* Rebuilt URL to: baidu.com/
*   Trying 220.181.57.216...
* Connected to baidu.com (220.181.57.216) port 80 (#0)
> GET / HTTP/1.1
> Host: baidu.com
> User-Agent: curl/7.47.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< Date: Tue, 25 Dec 2018 04:16:38 GMT
< Server: Apache
< Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT
< ETag: "51-47cf7e6ee8400"
< Accept-Ranges: bytes
< Content-Length: 81
< Cache-Control: max-age=86400
< Expires: Wed, 26 Dec 2018 04:16:38 GMT
< Connection: Keep-Alive
< Content-Type: text/html
< 
<html>
<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
</html>
* Connection #0 to host baidu.com left intact

可以看到它的html利用了meta标签的跳转,然鹅,meta是最先加载的,这种只能写死地址。并不能做到多域名共用,我们可以写个类似html,如下:

<html><script>window.location.href=`https://${location.host}${location.pathname}`</script></html>

⚠️然鹅这种页面跳转并不能做到http携带子路径跳转到https。
最终还是使用nginx配置文件来达到跳转目的。

文件

  • defalut.conf
server {
    listen 80 default_server;
    return 301 https://$host$request_uri; 
}
  • Dockerfile
From nginx:1
ADD default.conf /etc/nginx/conf.d/default.conf

然后可以把此镜像放到k8s某ns目录下,如(这里镜像为public可以直接使用):

echo "
---
kind: Service
apiVersion: v1
metadata:
  name: http2https-service
spec:
  type: NodePort
  selector:
    app: http2https
  ports:
    - protocol: TCP
      port: 80
      nodePort: 30080
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: http2https-deployment
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: http2https
    spec:
      containers:
      - name: http2https-controller
        image: registry.cn-hangzhou.aliyuncs.com/goddy-test/nginx:1.1
        ports:
        - containerPort: 80
" | kubectl -n test apply -f -

然后,在aws load balance即alb添加listener


⚠️这里第二条为kong kubernetes ingress的proxy服务,别忘记将防火墙开启对应端口。
如果此k8s集群中有其他需要跳转的服务,都可以配置此服务的端口30080转http的80端口达到共用的目的。

至此,访问http://domain-name/xx/xxx 即可自动跳转至https://domain-name/xx/xxx

Reference

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270