我要代理一个使用npm http-server模块提供服务的测试项目,如下所示:
http-server -p 8081
。
我有以下nginx配置。
nginx.conf
user www-data;
worker_processes 4;
events {
worker_connections 7684;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/sites-enabled/*;
}
站点启用/默认
upstream mysite {
server 127.0.0.1:8081;
}
server {
listen 80;
listen [::]:80;
location / {
proxy_pass http://mysite;
}
当我点击localhost
时,它有效。当我点击localhost:8081
时,它有效。但是,当我输入http://mysite
时,控制台正在给我一个ERR_NAME_NOT_RESOLVED错误。当我输入mysite
时,它只是谷歌。任何人都可以解释发生了什么以及为什么没有正确代理?
答案 0 :(得分:1)
你有两台服务器
mysite - 它只是平衡方法nginx的名称。
答案 1 :(得分:0)
使用server.listen 80
,您可以在端口80上创建本地服务器。所有请求(location /
)都会重定向(proxy_pass
)到mysite
。 mysite
位于端口8081
上的localhost上。
所以你必须在端口8081上运行另一台服务器。当你拨打localhost:80
时,你在8081上呼叫它。
编辑:mysite
只是内部后端集合(upstream
)的nginx的别名。您无法从浏览器中呼叫http://mysite。而只需致电http://localhost。