ngnix 代理 https 请求到子文件夹

ngnix 代理 https 请求到子文件夹

Nginx 背后有几个面向外部的 Web 应用程序,如下所示:

https://app1.mycompany.com--> 服务器 1:8080/应用程序 1

https://app2.mycompany.com--> 服务器 2:8080/应用程序 2

https://app2.mycompany.com--> 服务器2:8080/应用程序3

我请求将 nginx 配置更新为使用子文件夹进行代理,但我们的系统管理员告诉我,由于请求 URL 本身已加密,因此在 https 下无法实现此操作。我们的系统管理员知识渊博且注重安全,他说的很有道理。但是,我曾在联合系统上工作过(作为应用程序开发人员),其中对子文件夹的 https 请求被代理到单独的应用程序。有人能帮助我了解实现以下目标需要哪种类型的设置吗:

https://www.mycompany.com/app1--> 服务器 1:8080/应用程序 1

https://www.mycompany.com/app2--> 服务器 2:8080/应用程序 2

https://www.mycompany.com/app3--> 服务器2:8080/应用程序3

答案1

它应该类似于下面的内容。只需使用指令指定 HTTPS 反向代理地址的文件夹location,并使用指令地址指定内部位置的文件夹proxy_pass

server {

        listen          <ip_address>:443;
        ssl             on;
        server_name     <domain_name>;

        ### SSL cert files ###
        ssl_certificate      /etc/ssl/certs/local.crt;
        ssl_certificate_key  /etc/ssl/private/local.key;

        ### Add SSL specific settings here ###


        ssl_protocols        SSLv3 TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers          RC4:HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        keepalive_timeout    60;
        ssl_session_cache    shared:SSL:10m;
        ssl_session_timeout  10m;

        location /app1 {
                proxy_pass  http://<internal_ip>:8080/app1;

                proxy_set_header        Accept-Encoding   "";
                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_set_header        X-Forwarded-Proto $scheme;
                add_header              Front-End-Https   on;

                proxy_redirect     off;
        }

        location /app2 {
                proxy_pass  http://<internal_ip>:8080/app2;

                proxy_set_header        Accept-Encoding   "";
                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_set_header        X-Forwarded-Proto $scheme;
                add_header              Front-End-Https   on;

                proxy_redirect     off;

        location /app3 {
                proxy_pass  http://<internal_ip>:8080/app3;

                proxy_set_header        Accept-Encoding   "";
                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_set_header        X-Forwarded-Proto $scheme;
                add_header              Front-End-Https   on;

                proxy_redirect     off;
        }
}

相关内容