外部nginx代理到nodeport
部署过服务的NodePort之后我们往往不会直接使用NodePort访问服务,而是通过不同host:80访问,因此需要反向代理。 更规范的方法是使用K8S的Ingress,这里不会提及如何使用,我更喜欢自己在外部放一个Nginx。
docker run -di --name nginx -d -p 80:80 -p 9999:9999\
-v /root/nginx/log:/var/log/nginx \
-v /root/nginx/conf.d:/etc/nginx/conf.d \
-v /root/nginx/conf:/etc/nginx/nginx/conf \
-v /root/nginx/html:/lx/html \
--restart always \
--network host nginx
1
2
3
4
5
6
7
2
3
4
5
6
7
--network host : host模式类似于Vmware的桥接模式,与宿主机在同一个网络中,但没有独立IP地址。一个Docker容器一般会分配一个独立的Network Namespace。但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
vi /etc/nginx/conf.d/dev.conf
server {
## 监听多个端口 内网用80,外网用9999,避免运营商屏蔽80端口无法访问
listen 80 default;
listen 9999 default;
return 404;
}
## 支持ws
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80 ;
listen 9999 ;
server_name log.dev.dra-m.com;
location / {
proxy_pass http://127.0.0.1:30030;
client_max_body_size 1024m;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
docker restart nginx
上次更新: 10/23/2024