将所有 Nginx 流量重定向到单个 URL,且链接有效

将所有 Nginx 流量重定向到单个 URL,且链接有效

找不到关于如何使用 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
  } 

我希望复制粘贴能够有效。

在这个例子中,我还使用了注释掉的缓存和压缩,也禁用了它以进行测试

相关内容