我只在 Docker 上作業了很短的時間,所以我是新手,有些概念讓我無法理解。目前,我已經對一個應用程式進行了 dockerized 并創建了該應用程式的映像。另一方面,該應用程式是幾年前制作的,并連接到一個 MYSQL 5.7 資料庫,所以我們有這個資料庫的影像。最后,我們有一個 Nginx 鏡像作為反向代理。通過使用我的 Docker-Compose,整個系統可以正常作業,能夠毫無問題地訪問我的應用程式。我們希望這個應用程式可以被某些 IP 訪問,所以通常(沒有 dockerizing),我們使用 apache 和 mod_proxy 和 mod_proxy_http 來拒絕除這些 IP 之外的所有訪問。但是在 docker 中,使用 docker-compose 會創建您的內部網路,并且訪問客戶端的 IP 會發生變化,因此它會拒絕所有 IP。
由于我發現 Nginx 的檔案比 apache 與 docker 的檔案更多,因此我正在嘗試使用它來配置它。但是當我允許我的 IP 或另一臺計算機的 IP 時,同樣的事情不斷發生在我身上,它不起作用,給我服務器拒絕訪問的錯誤。有沒有辦法添加允許我某些真實 IP 的配置?我知道它可以通過 IPtables 規則在服務器本身上完成,但我們希望它全部通過 docker 映像完成。
我不在乎它是用 Nginx 還是 Apache 完成的,我已經看到它們都使用 realIP mod,但最重要的是記錄訪問,我不知道如何在允許或拒絕訪問部分使用它。
我的碼頭工人撰寫:
version: '3.0'
services:
db:
restart: always
container_name: bd
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: app
volumes:
- dbdata:/var/lib/mysql
- ./_MySQL_Init_Script:/docker-entrypoint-initdb.d
ports:
- "33306:3306"
app:
depends_on:
- db
restart: always
container_name: app
image: app:v1
proxy:
container_name: proxy
restart: always
image: nginx
depends_on:
- db
- app
ports:
- "80:80"
volumes:
- ./default.conf:/etc/nginx/conf.d/default.conf:ro
volumes:
dbdata:
我的默認.conf:
server {
listen 80;
listen [::]:80;
server_name localhost;
location / {
root /usr/share/nginx/html;
proxy_pass http://app:5885/;
deny all;
Allow 192.X.X.X;
Allow 192.X.X.X;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
Nginx 容器日志:
[錯誤]23#23: *3 訪問被規則禁止,客戶端:172.24.0.1,服務器本地主機,請求:"Get /api/Acceso/VersionApp HTTP/1.1" ...
uj5u.com熱心網友回復:
我設法解決了這個問題。該應用程式正在我的作業計算機上使用,這是一個帶有 Docker 桌面的 Windows。嘗試進入網路時,我是從同一臺計算機上完成的。
在將 dockerized 應用程式投入生產時,我只需配置 IPTables 就可以不使用 Allow 或 Deny 來設定它。嘗試訪問應用程式的 Web 時,它作業正常,但是當我看到 Nginx 日志時,我看到出現的是我的真實 IP,而不是 Docker 容器的 IP。
因此,我知道問題與 Docker Desktop 的操作有關,因為我在激活 wsl2 選項和未激活選項的情況下進行了測驗。
另外,第一次在 ubuntu 中進行測驗時,它給了我一個錯誤,因為 default.conf 寫得不好。Allow 必須是小寫的,并且 IPs 必須放在首位。
我最終的 default.conf:
server {
listen 80;
listen [::]:80;
server_name localhost;
location / {
root /usr/share/nginx/html;
proxy_pass http://app:5885/;
allow 192.X.X.X;
allow 192.X.X.X;
deny all;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/525754.html
標籤:码头工人阿帕奇nginx
