發表文章

目前顯示的是 2019的文章

如何在Nginx所設置的Proxy中可以取得真實客戶的IP位址

如何在Nginx所設置的Proxy架構中可以取得真實客戶的IP位址 常見的情境是需要對客戶端IP進行特定的處理,例如:限定存去次數、流量或是啟用快取服務,此時及需要藉由來源客戶端的IP位置來關聯。 設定前先來說明一下一些變數名稱: $remote_addr Nginx核心模組中( ngx_http_core_module )中的內建變數$remote_addr就是用戶端的IP位址。 X-Forwarded-For X-Forwarded-For(XFF),是一個用來辨識通過HTTP Proxy或是load balance連接到web server,用戶端最原始的IP位址使用的HTTP Request header欄位。 X-Real-IP X-Real-IP為傳統上HTTP reverse proxy會使用非標準的header去告知upstream server關於來源戶端的IP位址,之一個HTTP header欄位。在Nginx的文件( http://nginx.org/en/docs/http/ngx_http_proxy_module.html )範例中可以看到。 $proxy_add_x_forwarded_for Nginx Http proxy模組中( ngx_http_proxy_module )中的內建變數$proxy_add_x_forwarded_for,會使用HTTP Request Header, X-Forwarded-For將來源IP記錄於此,當request經過多台proxy或是load balance產生的多筆IP位址會以逗號分開來,如果一開始沒有設置X-Forwarded-For,那麼在模組中的$proxy_add_x_forwarded_for的值就會跟$remote_addr一樣。 通常可以透過下列的指令來設定 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 設定方法: 在第一層的proxy或是load balancer就先設定nginx的default.conf proxy_set_header X-Real-IP $remote_addr; proxy_set_hea

如何動態新增執行中的docker container對外的port

圖片
How to expose port on a running container? 如果你已經建立了一個docker container,並且成功運行中,但需要臨時增加對外的port這時候又不想將container停下來的時候,可以直接修改docker host的網路設定達到此目的。 注意:以下提供的修改方法,並不會影響container本身的設定,當docker host或是docer 重新啟動後,設定值就會還原。 假設你開啟了一個Web server的container但卻忘記要開啟 HTTP port,這時候除了透過 docker commit方式還可以動態新增對外的port,可以參照下列的步驟。 這邊的實作是針對運行在Linux上的docker所建立出的container來示範。 Step 1: 取得目標container的IP位址 # docker inspect <your container name> (假設你的container的IP是172.18.0.3) Step 2: 設定iptables # iptables -t nat -A DOCKER -p tcp --dport 80 -j DNAT --to-destination 172.18.0.3:80 # iptables -t nat -A POSTROUTING -j MASQUERADE -p tcp --source 172.18.0.3 --destination 172.18.0.3 --dport 80 #iptables -A DOCKER -j ACCEPT -p tcp --destination 172.18.0.3 --dport 80 Step 3: 進行HTTP連線測試,觀察是否可以連到該container的Web服務。

如何處理ssh-add出現錯誤Could not open a ......

當你打算將私鑰加入到你的SSH的時候,系統卻出現這樣的錯誤訊息: Could not open a connection to your authentication agent 該如何處理呢? 使用ssh-agent 來處理就可以: # ssh-agent bash # ssh-add <key>