我正在尝试将 nginx 配置为 LAN 上多个服务器的反向代理。他们应该在我的 WAN 上使用不同的子域。我的配置如下所示:
@ReverseProxy:/etc/nginx/sites-enabled$ cat reverseproxy
server {
server_name DOMAIN.eu;
# app1 reverse proxy follow
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://10.0.2.5:80;
}
server {
server_name Subdomain.domain.eu;
# app2 reverse proxy settings follow
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://10.0.2.33:80;
}
但是我收到了这个错误,不能再进一步了......
@ReverseProxy:/etc/nginx/sites-enabled$ nginx -t
nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
2009/01/04 12:22:13 [warn] 1302#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1
2009/01/04 12:22:13 [emerg] 1302#0: "proxy_pass" directive is not allowed here in /etc/nginx/sites-enabled/reverseproxy:8
nginx:配置文件 /etc/nginx/nginx.conf 测试失败
您的问题是您使用的是
proxy_pass
内部server
块,这是不允许的。尝试使用:在你的
server
街区内。正如nginx 文档所说,代理选项不能在server
级别上设置。日志中的其他问题发生是因为您的 nginx 以某种方式以普通用户身份启动,尽管它应该以
root
.该线程解决了我的问题,但我认为对其他人进行完整的配置查看会很有用。以下配置将对主机名 app1.local 和 app2.local 进行反向代理,其中 app1 被转发到侦听端口 3300 的另一个应用程序,而 app2 被转发到侦听端口 3000 的另一个应用程序。它位于此处的文件中
/etc/nginx/sites-available/two-applications.conf
此外,这些主机名是由组成的,需要
/etc/hosts
如下所示才能使它们工作:为了完整起见(在 Ubuntu Linux 上设置),这个文件存在并被符号链接
/etc/nginx/sites-available/two-applications.conf
到/etc/nginx/sites-enabled/two-applications.conf
文件名和符号链接名称当然可以是任何东西。更新后,运行sudo service nginx reload
将获取更改。