我正在运行 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 无效。)
更改您的 listen 语句以包含您的外部 IP,例如:
听 1.2.3.4:20008;