• Nginx 通过A域名代理B域名,保持A域名访问状态


           在某些业务场景中需要一种代理方式,就是隐藏某个域名使用另一个域名去代理被需要隐藏的域名,在别人抓包或者别人查看访问地址的时候,看的域名都不是真实域名地址。所以需要用到这种代理方式。

    需要被代理的B域名和地址:

    https://www.tengxu.com/stronge/61541fff9ee65f0001aca1eb.jpg?gue=s&kkl=889

    通过A域名代理之后的地址:

    https://www.baidu.com/stronge/61541fff9ee65f0001aca1eb.jpg?gue=s&kkl=889

    一、普通代理方式

    下面代码中,location / 和 loaction ^~/stronge/  都可以使用

    1. server {
    2. listen 443 ssl http2;
    3. server_name www.baidu.com;
    4. gzip on;
    5. ssl_certificate www.baidu.com.pem;
    6. ssl_certificate_key www.baidu.com.pem;
    7. ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    8. ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    9. ssl_prefer_server_ciphers on;
    10. ssl_session_cache shared:SSL:10m;
    11. ssl_session_timeout 10m;
    12. add_header Strict-Transport-Security "max-age=31536000";
    13. location / {
    14. proxy_redirect off;
    15. proxy_set_header Host www.tengxu.com;
    16. proxy_pass https://www.tengxu.com$request_uri;
    17. }
    18. location ^~/stronge/ {
    19. proxy_redirect off;
    20. proxy_set_header Host www.tengxu.com;
    21. proxy_pass https://www.tengxu.com$request_uri;
    22. }
    23. }

    $request_uri; 是后面的路径

    二、进阶代理方式

    $request_uri 的截取,代理后修改上下文,去伪链接

    比如B域名没有上下文,A代理B域名时,加入上下文。

    A域名:https://www.tengxu.com/61541fff9ee65f0001aca1eb.jpg?gue=s&kkl=889

    B域名:https://www.baidu.com/paper/61541fff9ee65f0001aca1eb.jpg?gue=s&kkl=889

    nginx 配置:

    1. location ^~/paper/ {
    2. set $new_request_uri $request_uri;
    3. if ($request_uri ~ ^/paper/(.+)$) {
    4. set $new_request_uri $1;
    5. }
    6. proxy_ssl_server_name on;
    7. proxy_redirect off;
    8. proxy_set_header Host www.baidu.com;
    9. proxy_pass https://www.baidu.com/$new_request_uri;
    10. }

     if ($request_uri ~ ^/paper/(.+)$) 这一段截取字符串时,会将最前面的 / 去除.

    所以,$new_request_uri 前面必须要加 / 成为 /$new_request_uri

    变成:https://www.baidu.comhttps://

    三、重点处理

    最重要的一条:必须要在 nginx 的http{} 中加上以下解析:

    resolver 8.8.8.8;

  • 相关阅读:
    【225. 用队列实现栈】三种方法
    链表小题.Play Train AtCoder - abc225_d
    Python3+selenium3
    GPT学习-使用embedding做回归(regression)预测
    在OCP集群内部署测试应用
    基于Java+Swing+Socket实现中国象棋-网络版
    SSH基于SSH的HR人事管理系统
    pmp考试如何复习
    从 0 到 1,看我玩弄千万日志于股掌
    29java容器方法概述(第二级结构)
  • 原文地址:https://blog.csdn.net/Qensq/article/details/133513973