找不到关于如何使用 NGINX 配置文件将所有 URL 流量重定向到具有功能链接的单个网站的简单示例。例如:
http://abcd.com -> https://www.wikipedia.org
https://defg.com -> https://www.wikipedia.org
http://uvw.com/xyz/test.html -> https://www.wikipedia.org
我试过:
server {
listen 80;
location / {
proxy_pass https://www.wikipedia.org;
}
}
它确实将流量引导到那里,但当我点击链接时,它给出错误,无法访问结果链接。所以我尝试了:
server {
listen 80;
# server_name wikipedia.org; #don't think I need this line
location / {
return 301 https://www.wikipedia.org$request_uri;
}
}
甚至没有打开网站,而是https://www.wikipedia.org無法接通。
有人知道我遗漏了什么吗?谢谢
答案1
解决了部分问题。万一其他人也遇到了同样的问题,那么这个问题可能与我在 Virtualbox 上运行 Turnkey Linux 代理服务器有关,同时尝试在托管虚拟机的 Windows 机器上设置 Windows 网络代理设置。
我在 Windows 主机下创建了其他几个虚拟机,并将我的 Windows 机器恢复到其原始(无代理)网络设置。现在,无论我输入什么 URL,客户端虚拟机 2 和 3 都会重定向到维基百科(我的示例网站),因为它们现在指向具有以下配置设置的虚拟机 1 代理服务器:
server {
listen 80;
location / {
return 301 https://www.wikipedia.org;
}
}
这并不能解决问题,如果我点击维基百科中位于域外的链接,浏览器会跟随它,我不希望它跟随另一个域上的链接,而是返回到原始的 www.wikipedia.org 页面。
答案2
我的评论太长了,请将其视为评论而不是答案,如果有帮助的话我会很高兴。
upstream subdom {
server "subdom.domain.example";
}
server {
server_name subdom.domain.example;
listen 80;
return 301 https://$host$request_uri;
}
server {
proxy_read_timeout 3600;
listen 443 ssl http2;
server_name subdom.domain.example;
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
client_max_body_size 0;
proxy_connect_timeout 3600s;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
send_timeout 3600s;
#proxy_cache hd_cache;
proxy_set_header X-Cache-Status $upstream_cache_status;
proxy_cache_valid 200 1w;
proxy_pass https://www.wiki-pedia.org;
proxy_set_header Host $http_host;
proxy_buffers 16 8m;
proxy_buffer_size 2m;
gzip on;
gzip_vary on;
gzip_comp_level 9;
gzip_proxied any;
}
ssl_certificate
/etc/letsencrypt/live/example/fullchain.pem; # managed
by Certbot
ssl_certificate_key
/etc/letsencrypt/live/example/privkey.pem; # managed
by Certbot
}
我希望复制粘贴能够有效。
在这个例子中,我还使用了注释掉的缓存和压缩,也禁用了它以进行测试