nginx容器之間代理
阿新 • • 發佈:2021-01-19
反向代理端
[root@server01 nginx]# ll 總用量 4 -rw-r--r-- 1 root root 1383 1月 19 13:23 default.conf [root@server01 nginx]# cat default.conf upstream node1 { server 192.168.0.221:82; server 192.168.0.221; } server { listen 80; server_name 192.168.0.220; access_log /var/log/nginx/forward.access.log main; error_log/var/log/nginx/forward.error.log warn; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; #允許客戶端請求的最大單檔案位元組數 client_body_buffer_size 128k; #緩衝區代理緩衝使用者端請求的最大位元組數 proxy_connect_timeout300; #nginx跟後端伺服器連線超時時間(代理連線超時) proxy_send_timeout 300; #後端伺服器資料回傳時間(代理髮送超時) proxy_read_timeout 300; #連線成功後,後端伺服器響應時間(代理接收超時) proxy_buffer_size 4k; #設定代理伺服器(nginx)儲存使用者頭資訊的緩衝區大小 proxy_buffers 4 32k; #proxy_buffers緩衝區,網頁平均在32k以下的話,這樣設定 proxy_busy_buffers_size 64k; #高負荷下緩衝大小(proxy_buffers*2) proxy_temp_file_write_size 64k; #設定快取資料夾大小,大於這個值,將從upstream伺服器傳 location / { proxy_pass http://node1; } }
啟動容器
docker run -it --name nginx -p 80:80 -v /nginx/default.conf:/etc/nginx/conf.d/default.conf -d nginx:latest
後端伺服器
啟動兩個nginx容器 docker run -it --name nginx1 -p 82:80 -d nginx:latest docker run -it --name nginx -p 80:80 -d nginx1:latest
網頁內容
[root@server02 nginx]# docker exec -it nginx /bin/bash root@bb26273d260b:/# cat /usr/share/nginx/html/index.html port test 192.168.0.221 root@bb26273d260b:/# exit [root@server02 nginx]# docker exec -it nginx1 /bin/bash root@f0d8409e7e14:/# cat /usr/share/nginx/html/index.html 123456 root@f0d8409e7e14:/# exit exit
[root@server02 nginx]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f0d8409e7e14 nginx:latest "/docker-entrypoint.…" 27 minutes ago Up 27 minutes 0.0.0.0:82->80/tcp nginx1 bb26273d260b nginx:latest "/docker-entrypoint.…" 2 hours ago Up About an hour 0.0.0.0:80->80/tcp nginx
測試
[root@server01 nginx]# curl localhost 123456 [root@server01 nginx]# curl localhost port test 192.168.0.221 [root@server01 nginx]# curl localhost 123456 [root@server01 nginx]# curl localhost port test 192.168.0.221 [root@server01 nginx]# curl localhost 123456 [root@server01 nginx]# curl localhost port test 192.168.0.221
單機上兩個nginx容器代理
先啟動兩個nginx容器
docker run -it --name nginx2 -p 82:80 -d nginx1:latest
docker run -it --name nginx2 -p 83:80 -d nginx2:latest
[root@server01 nginx]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9885bdc24a54 nginx:latest "/docker-entrypoint.…" 10 minutes ago Up 10 minutes 0.0.0.0:83->80/tcp nginx2 e02eb72e071a nginx:latest "/docker-entrypoint.…" 19 minutes ago Up 19 minutes 0.0.0.0:82->80/tcp nginx1
docker run -it --name nginx -p 80:80 --link nginx1 --link nginx2 -v /nginx/default.conf:/etc/nginx/conf.d/default.conf -d nginx:latest
[root@server01 nginx]# cat default.conf upstream node1 { server nginx1:80; server nginx2:80; } server { listen 80; server_name 192.168.0.220; access_log /var/log/nginx/forward.access.log main; error_log /var/log/nginx/forward.error.log warn; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location / { proxy_pass http://node1; } } [root@server01 nginx]#
不同主機間nginx容器代理
192.168.0.221啟動三個nginx容器
docker run -it --name nginx5 -p 85:80 -d nginx:latest docker run -it --name nginx1 -p 82:80 -d nginx:latest docker run -it --name nginx -p 80:80 -d nginx:latest
寫好每個nginx容器的index.html,內容不要相同。
192.168.0.220啟動一個容器
[root@server01 nginx]# cat default.conf upstream node1 { server 192.168.0.221:85; server 192.168.0.221:80; server 192.168.0.221:82; } server { listen 80; server_name 192.168.0.220; access_log /var/log/nginx/forward.access.log main; error_log /var/log/nginx/forward.error.log warn; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location / { proxy_pass http://node1; } }
啟動容器
docker run -it --name nginx -p 80:80 -v /nginx/default.conf:/etc/nginx/conf.d/default.conf -d nginx:latest
測試:
[root@server01 nginx]# curl localhost
123456
[root@server01 nginx]# curl localhost
jdfhskdjfh
[root@server01 nginx]# curl localhost
port test
192.168.0.221
[root@server01 nginx]# curl localhost
123456
[root@server01 nginx]# curl localhost
jdfhskdjfh
[root@server01 nginx]# curl localhost
port test
192.168.0.221