如何通过虚拟环境路由HTTPS URL

我在虚拟环境中设置安全路由时遇到问题。 对网站REST API的所有HTTP请求都正常工作。
证书由我工作的公司提供,并且是我们域的通配证书。
我的问题是证书的位置,这是我无法访问。
我试图在许多地方configurationSSL,但它只能部分工作。

为了尝试路线,我使用邮差和一个普通的浏览器(Chrome)。
我可以成功访问网页,login,用JSON发送请求到REST API。
所有url都以http://开头。
当我做的完全一样,但与https:// ,浏览器显示该网站是不安全的。 邮递员也显示连接到URL时出错。 http://不会发生这种情况。

设置看起来像这样: 我的虚拟系统的设置

网关服务器作为多个虚拟机的入口。 我的应用程序运行在其中之一。 网关运行apache2以方便路由到它托pipe的所有虚拟机。
而且,它是所有虚拟环境中SSL相关事务的处理程序。

我正在开发基于Symfony框架的PHP Web应用程序。
为了实现与此应用程序的持续集成,我们在Docker实例中运行应用程序。 在Jenkins成功构build之后,脚本会启动一个新的Docker镜像。
Docker映像运行托pipe我的应用程序的Nginx服务器

我曾尝试在我的Nginxconfiguration和apache2configuration中configuration证书。
两者都没有成功的结果。
我发现通配符证书不适用于子子域。 因此,我认为my-app.development.mycompany.com将无法正常工作。
将URL更改为development.mycompany.com/my-app/失败,因为PHP应用程序在/my-app/ part中find了。
这导致应用程序的路由select问题,并阻止其他虚拟机的应用程序。

我想了解如何configurationapache2主机来处理SSL。 为了能够在未来在这个虚拟环境中开发更多的应用程序,我想设置这个,以便HTTPS覆盖所有的虚拟机。
为什么此设置适用于HTTP,但不适用于HTTPS?

入口点的虚拟主机configuration可以在下面find

  <VirtualHost *:444>       ServerName development.mycompany.com       SSLEngine on       SSLCertificateFile /etc/apache2/ssl/certificate_bundle.crt       SSLCertificateKeyFile /etc/apache2/ssl/certificate.key       #RewriteEngine on       ProxyPreserveHost On       <Proxy *>               Order Deny,Allow               Allow from all       </Proxy>       #ProxyPass /my-app/ http://my-app.development.mycompany.com:80/       #ProxyPassReverse /my-app/ http://my-app.developmenet.mycompany.com$               ProxyPass / http://my-app.development.mycompany.com:80/               ProxyPassReverse / https://my-app.development.mycompany.com:444/       #<Location />       #       ProxyPass http://my-app.development.mycompany.com:80/       #       #ProxyPassReverse https://development.mycompany.com:444       #       ProxyPassReverse http://my-app.development.mycompany.com:80/       #</Location> </VirtualHost> <VirtualHost *:80> ServerName my-app.development.mycompany.com               <Proxy *>                              Order Deny,Allow                              Allow from all               </Proxy>               <Location />                              ProxyPass http://my-app.development.mycompany.com:80/               ProxyPassReverse http://my-app.development.mycompany.com:80/                              #ProxyPass http://172.30.1.105:80/                              #ProxyPassReverse http://172.30.1.105:80/               </Location> </VirtualHost> <VirtualHost *:80> ServerName jenkins.my-app.development.mycompany.com       <Proxy *>               Order Deny,Allow               Allow from all       </Proxy>       <Location />                              ProxyPass http://my-app.development.mycompany.com:86/                              ProxyPassReverse http://my-app.development.mycompany.com:86/               #ProxyPass http://172.30.1.105:86/               #ProxyPassReverse http://172.30.1.105:86/       </Location> </VirtualHost> <VirtualHost *:443>       ServerName my-app.development.mycompany.com       SSLEngine on       SSLCertificateFile /etc/apache2/ssl/certificate_bundle.crt       SSLCertificateKeyFile /etc/apache2/ssl/certificate.key       <Proxy *>               Order Deny,Allow               Allow from all       </Proxy>       <Location />               ProxyPass http://my-app.development.mycompany.com:80/               ProxyPassReverse http://my-app.development.mycompany.com:80/       </Location> </VirtualHost> <VirtualHost *:443>               ServerName development.mycompany.com/my-app               SSLEngine on               SSLCertificateFile /etc/apache2/ssl/certificate_bundle.crt       SSLCertificateKeyFile /etc/apache2/ssl/certificate.key       <Proxy *>               Order Deny,Allow               Allow from all       </Proxy>       <Location />               ProxyPass http://my-app.development.mycompany.com:80/               ProxyPassReverse http://my-app.development.mycompany.com:80/       </Location> </VirtualHost> <VirtualHost *:80> ServerName development.mycompany.com/my-app       <Proxy *>               Order Deny,Allow               Allow from all       </Proxy>       <Location />               ProxyPass http://my-app.development.mycompany.com:80/               ProxyPassReverse http://my-app.development.mycompany.com:80/               #ProxyPass http://172.30.1.105:80/               #ProxyPassReverse http://172.30.1.105:80/       </Location> </VirtualHost> 

我的Nginxconfiguration看起来像这样

  server { listen 80; listen 444 ssl; server_name development.mycompany.com; root /var/www/my-app/web; client_max_body_size 4048M; location / { # try to serve file directly, fallback to app.php # try_files $uri /app.php$is_args$args; index app.php; try_files $uri @rewriteapp; } location @rewriteapp { rewrite ^(.*)$ /app.php/$1 last; } # DEV location ~ ^/(app_dev|config)\.php(/|$) { fastcgi_pass php:9000; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; fastcgi_param HTTPS $https; } # PROD location ~ ^/app\.php(/|$) { fastcgi_pass php:9000; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; fastcgi_param HTTPS $https; #internal; } location ~ \.php$ { return 404; } error_log /var/log/nginx/my_app_error.log; access_log /var/log/nginx/my_app_access.log; } 

欢迎任何帮助,提前感谢。

确保通过打开开发工具删除铬高速caching,然后点击开发工具右上angular的3个点,select设置,在里面的设置select禁用caching(而DevTools是开放的),然后closures设置,现在去“我“在Chrome中点击它,然后删除与您的网站相关的任何cookies。 然后点击你的网站,然后按Ctrl + F5这将很难刷新页面。 如果你还没有https,那么另一个淘汰的过程就是打开像Gtmetrics这样的工具的网站,并使用https域,如果https不工作,这将给你一个错误。 下一步尝试的是混合内容,检查你的页面源代码并searchHTTP:如果你发现你有混合的内容,你将需要findHTTP请求来自哪里。 确保代理服务器通道中的URL正确反斜杠,并确保您的证书是通配符,或者您对所有域和子域使用多个证书。 这是一个基本的清单。 绕过你的问题将是使用像cloudflare CDN提供免费的SSL连接,将开箱即用。 Cloudflare也将加速您的网站,并防止DDoS攻击正在上升。 你只需要将HTTP的URL重写为https,但是实际上没有完整的故事,这是我现在可以build议的。 我希望你能在build议中find你的答案。