配置 nginx 将外部端口转发到同一内部端口

配置 nginx 将外部端口转发到同一内部端口

我正在运行 TileMill,它正在从本地主机监听端口 20008 和 20009。我希望 20009 只能通过端口 80 上的 nginx 访问(使用简单身份验证)。我希望 20008 可以从外部“直接”访问。

server {
   listen 80;
   server_name localhost;
   location / {
        proxy_set_header Host $http_host;
        proxy_pass http://127.0.0.1:20009;
        auth_basic "Restricted";
        auth_basic_user_file htpasswd;
    }
}
server {
   listen 20008;
   server_name localhost;
   location / {
        proxy_set_header Host $http_host;
        proxy_pass http://127.0.0.1:20008;
    }
}

明显的问题是 nginx 无法监听端口 20008 - 该端口已被 TileMill 使用。

Restarting nginx: nginx: [emerg] bind() to 0.0.0.0:20008 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:20008 failed (98: Address already in use)

有没有一种方法可以让 nginx 进行外部监听而不会与内部监听的其他服务发生冲突?(更改localhost为服务器的外部 IP 不起作用。)

答案1

更改你的监听语句以包含你的外部 IP,例如:

听 1.2.3.4:20008;

相关内容