来自同一服务器的带有 nginx 的域和子域

来自同一服务器的带有 nginx 的域和子域

这里开发多于运维。情况:我有一个家庭服务器 (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;
    }
}

相关内容