Nginx:如何使用proxy\u pass将请求转发到端口
我刚刚开始使用Nginx,正在尝试设置一个服务器块,将子域Nginx:如何使用proxy\u pass将请求转发到端口,nginx,virtualhost,server,proxypass,Nginx,Virtualhost,Server,Proxypass,我刚刚开始使用Nginx,正在尝试设置一个服务器块,将子域api.mydomain.com上的所有请求转发到端口8080 以下是我得到的: 更新: server { server_name api.mydomain.com; location / { proxy_pass http://127.0.0.1:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP
api.mydomain.com
上的所有请求转发到端口8080
以下是我得到的:
更新:
server {
server_name api.mydomain.com;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
}
}
server {
server_name www.mydomain.com;
return 301 $scheme://mydomain.com$request_uri;
}
server {
server_name mydomain.com;
root /var/www/mydomain.com;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
服务器块存在于/etc/nginx/sites available
中,我已在/etc/nginx/sites enabled
中创建了一个符号链接
我所期望的是:
我在8080端口上运行。当我转到api.mydomain.com/users
时,我希望从部署的api获得JSON响应,但没有得到响应
此外,我对www.mydomain.com
的301重定向也不起作用。那块代码是我复制的
我所尝试的:
- 确认
和mydomain.com:8080/users
返回预期的响应$curl http://127.0.0.1:8080/users
- 在对服务器块进行更改后,重新启动了nginx服务
- 已尝试删除代理集标题行
知道我在这里遗漏了什么吗?您不需要为您的用例显式捕获URL。以下内容适用于您的位置块:
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
}
事实证明,我的问题不是Nginx配置,而是DNS设置。我必须为我的每个子域(
www
和api
)创建一个A NAME
记录。新手犯的错误
我的一位同事实际上帮我解决了这个问题。我们在使用本地机器上的
telnet
通过IP地址连接到服务器时发现了这个问题,并发现Nginx实际上正在做我想做的事情。我也这么认为,但它不起作用……这就是我选择regex路线的原因。配置中一定有其他内容。我的另一个服务器块只提供静态页面,工作正常。