这里开发多于运维。情况:我有一个家庭服务器 (fedora),使用 podman 运行一些应用程序。其中一些是数据库服务并使用各种端口。这可以在 NGINX 中工作吗?
- 通过 托管个人网站
domain.dev
。它存在于localhost:8080
。 - 通过 托管 Fedora 驾驶舱
cocking.domain.dev
。它存在于localhost:9090
。 - 通过自己的子域托管其他应用程序,这些应用程序的各种端口
db.domain.dev:30001
都位于 上localhost:30001
。我想我总共使用了 15 个端口。
我认为我可以做 Cockpit(它使用 websockets)
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 domains 和 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;
}
}