因此,我在家中设置了一台物理服务器,并以 Proxmox VE 5.3 作为主操作系统。我在 Proxmox 中安装了 4 个虚拟机:
- Nginx(安装在 Ubuntu 18.04 LTS VM 上)
- 话语(安装在 Ubuntu 18.04 LTS VM 上),设置为 HTTP,计划设置 HTTPS
- GitLab(安装在 Ubuntu 18.04 LTS VM 上),设置为 HTTP,计划设置 HTTPS
- ownCloud(安装在 Ubuntu 18.04 LTS VM 上),设置为 HTTPS
此设置的目的是让 Nginx 反向代理其他 3 个虚拟机。不幸的是,我似乎遇到了很多困难。让我在下表中展示我在浏览器中得到的结果:
----------------------------------------------------------------------------------------------------------------------------------------------------------
| VM | URL | What I get back in the Browser |
----------------------------------------------------------------------------------------------------------------------------------------------------------
| Discourse | http://discourse.myreserveddns.com | "Welcome to nginx!" default page |
| GitLab | http://git.myreserveddns.com | Redirects to http://git.myreserveddns.com/users/sign_in, the page I expect to see. |
| ownCloud | http://oc.myreserveddns.com | Redirects to https://oc.myreserveddns.com |
| ownCloud | https://oc.myreserveddns.com | "Apache2 Ubuntu Default Page" |
| ownCloud | https://oc.myreserveddns.com/owncloud/index.php/login | I get the ownCloud login page, as I expect to see. |
----------------------------------------------------------------------------------------------------------------------------------------------------------
因此,GitLab 基本上按照预期重定向。ownCloud 我可以使用完整的 URL 进入登录页面,但我更希望使用简单的 URL,例如http://oc.myreservedns.com和https://oc.myreservedns.com要路由到登录 URL 和 Discourse,我只能获得“欢迎使用 nginx!”默认页面。对于 Discourse,我应该提到,我已经获得了正确的 Discourse 页面来提出http://discourse.myreservedns.com,但是当我在浏览器中测试私有 IP 后,我得到的只是 Nginx 默认页面。
无论如何,这里是我的 /etc/nginx/sites-available 中的 Nginx conf 文件(是的,所有文件都包含指向 /etc/nginx/sites-enabled 的符号链接):
话语配置文件
server {
# The IP that you forwarded in your router (nginx proxy)
listen 192.168.1.101:80; listen [::]:80;
# Make site accessible from http://localhost/
server_name discourse.myreserveddns.com;
# The internal IP of the VM that hosts your Apache config
set $upstream 192.168.1.104;
location / {
proxy_pass_header Authorization;
proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:;
proxy_set_header Host $http_host;
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_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
client_max_body_size 0;
proxy_read_timeout 36000s;
proxy_redirect off;
}
}
gitlab.conf (将包含代码,但有人告诉我该帖子看起来像垃圾邮件,并且其重要性不如要显示的其他 CONF 文件)
owncloud.conf
server {
# The IP that you forwarded in your router (nginx proxy)
listen 192.168.0.101:443 ssl;
# SSL config
ssl on;
ssl_certificate /etc/nginx/ssl/owncloud.crt;
ssl_certificate_key /etc/nginx/ssl/owncloud.key;
# Make site accessible from http://localhost/
server_name oc;
# The internal IP of the VM that hosts your Apache config
set $upstream 192.168.0.102;
location / {
proxy_pass_header Authorization;
proxy_pass https://$upstream;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
client_max_body_size 0;
proxy_read_timeout 36000s;
proxy_redirect off;
}
}
所以我想我有两个主要问题:
- 我怎么会得到“欢迎使用 nginx!”和“Apache2 Ubuntu 默认页面”默认页面?我在 Nginx 中哪里可以找到这些“默认”页面?
- ownCloud 的默认 Apache 页面非常奇怪。它运行 Apache 作为 SSL,因此其默认页面可能位于 ownCloud VM 上。同时,Discourse 上根本没有安装 Nginx!
- 我可以使用 Nginx 从一个链接重定向到另一个链接吗?例如,我可以从https://oc.myreservedns.com到https://oc.myreserveddns.com/owncloud/index.php/login?