我正在尝试通过 Apache 运行 Nginx。
我的配置是,我将 Apache 设置为监听端口8080
而不是80
。
然后我设置 Nginx 通过端口将所有请求代理到同一个域8080
:
upstream app {
server example.com:8080;
}
server {
listen 80;
server_name example.com;
ssl_protocols TLSv1.2;
charset utf-8;
index index.html index.htm index.php;
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/example.com-error.log error;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass https://app/;
proxy_redirect off;
# Handle Web Socket connections
proxy_http_version 1.0;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
然后我设置了 Apache 配置,它似乎工作正常,因为我可以访问我的网站http://example.com:8080没有什么问题。
<VirtualHost *>
DocumentRoot "/home/forge/example.com"
ServerName example.com
ServerAlias www.example.com
CustomLog /var/log/httpd/example_com_access.log common
ErrorLog /var/log/httpd/example_com_error.log
<Directory /home/forge/example.com/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
但当尝试去http://example.com/我明白了502 Bad Gateway - nginx/1.8.0
。
任何想法如何解决这一问题?
我需要这个的原因是我有一个 Web 服务器,其中有很多使用 Nginx 的网站,但我需要其中一些(仅其中一些)网站运行 Apache 规则而不是 Nginx 规则。
我正在运行 Ubuntu 14.04
。
编辑:以下是来自的日志/var/log/nginx/error.log
:
2015/11/06 11:05:27 [emerg] 18176#0: "proxy_pass" cannot have URI part in location given by regular expression, or inside named location, or inside "if" statement, or inside "limit_except" block in /etc/nginx/sites-enabled/thehostboy.com:71
2015/11/06 11:07:49 [emerg] 18564#0: "proxy_pass" cannot have URI part in location given by regular expression, or inside named location, or inside "if" statement, or inside "limit_except" block in /etc/nginx/sites-enabled/thehostboy.com:71
2015/11/06 11:23:25 [notice] 21045#0: signal process started
2015/11/06 11:23:25 [alert] 20875#0: *60679 open socket #4 left in connection 9
2015/11/06 11:23:25 [alert] 20875#0: *60680 open socket #41 left in connection 10
2015/11/06 11:23:25 [alert] 20875#0: *60678 open socket #46 left in connection 25
2015/11/06 11:23:25 [alert] 20875#0: *60677 open socket #45 left in connection 26
2015/11/06 11:23:25 [alert] 20875#0: aborting
2015/11/06 11:25:04 [notice] 21184#0: signal process started
2015/11/06 11:25:04 [alert] 21052#0: *97 open socket #3 left in connection 5
2015/11/06 11:25:04 [alert] 21052#0: *98 open socket #36 left in connection 11
2015/11/06 11:25:04 [alert] 21052#0: aborting
2015/11/06 11:27:02 [notice] 21294#0: signal process started
2015/11/06 11:28:39 [notice] 21378#0: signal process started
答案1
我通过将 更改为 解决了proxy_pass
这个https://...
问题http://...
。