将第二个域重定向回主域上的特定位置

Redirect 2nd domain back to a specific location on main domain

使用 Nginx 作为本地 Tomcat 实例的反向代理。需要将第二个域 (example2.com) 重定向到我们主域 example.com 内的特定请求路径,例如example2.com/** => example.com/urlService/**。如果我们在浏览器中输入 example2.com/foo,它应该将我们带到 example.com/urlService/foo。当我使用完整的请求路径时能够访问它,例如example2.com/urlService/foo.

使用以下反向代理教程see here 设置 nginx。

tomcat hook to njinx
upstream tomcat {
    server 127.0.0.1:8080 fail_timeout=0;
}

server {
    server_name example.com example2.com;
    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot

#    ssl stuff here (left out);

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                #try_files $uri $uri/ =404;
                include proxy_params;
                proxy_pass http://tomcat/;
        }

}


server {
    listen 80;
    server_name example.com;
    rewrite ^/(.*) https://example.com/ permanent;
}

尝试在没有重定向的情况下将 https://example2.com/foo 代理到 https://example.com/urlService/foo 可能很简单,也可能充满问题。主要的潜在问题是解析请求页面生成的 URL。

但是,一般的解决方案可能如下所示:

upstream tomcat {
    ...
}

server {
    server_name example.com;
    listen 443 ssl;
    ...
    location / {
        ...
        proxy_pass http://tomcat/;
    }    
}    
server {
    server_name example2.com;
    listen 443 ssl;
    ...
    location / {
        ...
        proxy_pass http://tomcat/urlService/;
    }    
}    
server {
    listen 443 ssl default_server;
    ...
    return 301 https://example.com/;
}
server {
    listen 80 default_server;
    return 301 https://$host$request_uri;
}

第一个 server 块是您的主站点。第二个 server 阻止代理进入您的主站点的子文件夹。

可选 第三个服务器块匹配 https 与您的任何一个域名都不匹配的请求(例如 IP 地址访问)。它需要一个 SSL 证书,该证书可以与您的主站点相同。浏览器会抱怨 - 但它会停止使用无效域名访问主站点。要么重定向到主站点,要么拒绝使用 return 444;.

的连接

最后的 server 块是通用的 httphttps 重定向器。