這裡的開發人員多於維運人員。情況:我有一個家庭伺服器(fedora),使用 podman 運行一些應用程式。有些是資料庫服務並使用各種連接埠。這可以在 NGINX 中工作嗎?
- 透過託管個人網站
domain.dev
。它繼續存在localhost:8080
。 - 主機通過Fedora駕駛艙
cocking.domain.dev
。它繼續存在localhost:9090
。 - 透過它們自己的子網域託管其他應用程序,其各種連接埠
db.domain.dev:30001
位於localhost:30001
.我想我總共使用了 15 個連接埠。
我想我可以做的駕駛艙(它使用網路套接字)
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream websocket {
server localhost:9090;
}
server {
server_name cockpit.domain.dev;
location / {
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Origin https://$host;
}
}
我可以簡單地添加另一個location /
網域domain.dev
嗎?
我可以打開調變解調器以傳遞所有必需的連接埠。如果可以的話,我稍後會有一個關於 certbot、google 網域和 google dns 的後續問題。我不能讓它發揮作用。
答案1
首先,請記住 nginx 是一個 HTTP 代理,因此您只能代理透過 HTTP(S) 協定的請求。
其次,我認為一旦作業系統不允許兩個不同的應用程式和進程綁定同一端口,我就需要將不同的端口映射到本地主機端口。
下面的配置應該適合您(請注意,我將連接埠 18080 對應到 localhost:8080,將連接埠 19090 對應到 localhost:9090):
server {
listen 18080;
server_name domain.dev;
access_log /var/log/nginx/domain.dev-access.log;
error_log /var/log/nginx/domain.dev-error.log error;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 19090;
server_name cockpit.domain.dev;
access_log /var/log/nginx/cockpit.domain.dev-access.log;
error_log /var/log/nginx/cockpit.domain.dev-error.log error;
location / {
proxy_pass http://localhost:9090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}