日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nginx 端口转发

發(fā)布時間:2024/8/23 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nginx 端口转发 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

概述

這兩天在寫 go 項目, 一個 HTTP 服務(wù)器. 之前寫的是 php 項目, nginx 監(jiān)聽80端口, 根據(jù)域名將請求分配給不同項目. 現(xiàn)在換了 go, 自然也想延續(xù)這個操作, 畢竟都是跑在同一臺服務(wù)器上. 那么問題來了, 我的nginx 監(jiān)聽80端口的同時, go 服務(wù)器是無法同樣監(jiān)聽80端口的. 這該如何是好啊, 給我整的一臉懵逼.

nginx 轉(zhuǎn)發(fā) go 服務(wù)

不過想了一下, 發(fā)現(xiàn)自己進入了思維誤區(qū). 為什么都要監(jiān)聽80端口呢? go 服務(wù)監(jiān)聽其他端口, 然后 nginx 將請求進行端口的轉(zhuǎn)發(fā)不就可以了么. 真是個傻子. 搜了一下 nginx 的配置, 確實有端口轉(zhuǎn)發(fā)的配置. 如下:

#配置負載均衡池 upstream test_go_pool{server 127.0.0.1:8090; }#Demo2端口轉(zhuǎn)發(fā) server {listen 80;server_name test.go.com;error_log /var/log/nginx/test_go.error.log;access_log /var/log/nginx/test_go.access.log;#將所有請求轉(zhuǎn)發(fā)給均衡池的應(yīng)用處理location / {proxy_set_header Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://test_go_pool;} }

到這里, 如果 go 服務(wù)已經(jīng)啟動了, 應(yīng)該就沒有問題了. (如果是線上, go 服務(wù)的端口不用對外開放, 僅供內(nèi)部 nginx 訪問即可)

docker 訪問宿主網(wǎng)絡(luò)

但是我的環(huán)境訪問失敗了. 究其原因, 我的 nginx 是跑在 docker 中的, go 服務(wù)是跑在宿主主機上的. 所以在對127.0.0.1回環(huán)地址訪問的時候, 沒有訪問的宿主主機. 解決的方向也很清晰, 只要能夠訪問到宿主主機的網(wǎng)絡(luò)就行了.

方案一

最先想到的方案, 就是將127.0.0.1更換成宿主主機的 IP. mac 下執(zhí)行?ifconfig, 可以找到本機的 IP 地址. 將地址更換之后, 就可以了. 但是如果是移動網(wǎng)絡(luò)等, IP 經(jīng)常換的話, 就很難受了.

方案二

更改網(wǎng)絡(luò)鏈接方式. 虛擬機網(wǎng)絡(luò)的鏈接方式有: bridge(橋接網(wǎng)絡(luò)), host(共用網(wǎng)絡(luò)), 以及無網(wǎng)絡(luò).

docker 默認使用的是橋接的形式, 如果換成host, 就沒有訪問不到的問題了.更改之后, 可以直接通過127.0.0.1回環(huán)地址訪問, 就沒有 IP 更換的問題了. 但同時的, host 方式會將虛擬機的所有端口全都與主機共用, 隔離性太差.

方案三

經(jīng)過一番摸索, 找到了宿主主機的名字:?docker.for.mac.host.internal. 將地址更換成這個, docker 會自動映射到宿主主機上.

至此, 我的問題已經(jīng)解決了. 不過就在我準備收手的時候, 又讓我找到了另外一個.

方案四

方案三的方式, 看名字也知道, 這個映射是針對 mac 的. 如果不是在 mac 上裝的 docker 怎么辦呢?

host.docker.internal

這個DNS 名稱, 可以直接映射到宿主主機. 完美解決. 同時:?gateway.docker.internal?是網(wǎng)關(guān)的名稱.

結(jié)束.... 簡單記錄以下.

總結(jié)

以上是生活随笔為你收集整理的nginx 端口转发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。