configurationnginx与Tomcat和SSL一起使用

我有谷歌search,看着各种SSL样本configuration,似乎我已经把事情设置正确,但有两个问题:

  1. 当我加载https://mysite.com时 ,应该出现在浏览器窗口右上angular的锁不会出现。
  2. 后台的Java应用程序使用httpUtil.GetRequestURL()获取当前的请求,它是http://mysite.com 。

我已经尝试将主机头设置为$主机,而不是$ http_host,并试图设置proxy_redirect将URL设置为https,但都没有任何效果。

我的SSLconfiguration如下。 有人可以告诉我我做错了什么吗?

server { listen 443; server_name dev.mysite.com; access_log /var/log/nginx/dev_mysite_access.log; error_log /var/log/nginx/dev_mysite_error.log; ssl on; ssl_certificate /export/nginx/certs/mysite.com.crt; ssl_certificate_key /export/nginx/certs/mysite.com.key; location / { # give site more time to respond proxy_read_timeout 120; # needed to forward user's IP address proxy_set_header X-Real-IP $remote_addr; # needed for HTTPS proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_max_temp_file_size 0; proxy_pass http://localhost:8081; } } 

已经有六个多月的时间了,但是我会给它一个机会。 我想你是缺lessX-Forwarded-Proto头。 nginx上相关的虚拟主机configuration:

  server jira.site.com; ... location /jira { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:8080/jira; } 

在某些情况下,比如上面的JIRA,你需要告诉Tomcat它在代理之后:

  <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" URIEncoding="UTF-8" redirectPort="8443" scheme="https" proxyName="jira.site.com" proxyPort="443"/> 

这样,你可能会得到每个应用程序的几个端口,但它工作得很好。

至于troyengel的,为什么我会打扰“Nginx + Tomcat”? 那么,Nginx的速度更快,并采取内存和CPU明智的。 那样的话,就有更多的资源可以浪费在Tomcat上。 :/

最后,我不会调用Apache-AJP13-Tomcat进行正确的集成,而不再是这样。 一旦启用了Tomcat APR Listener:

 <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> 

和sendfile(与tcnative库),整个事情只是苍蝇。 然后你直接从nginx发送静态内容,并且你仍然有足够的能力通过代理到php-fpm来运行每个人最喜欢的php站点。

那么,这只是从我的经验,虽然ymmv。

我的工作有类似的configuration, nginx终止SSL并将原始HTTP传回给tomcat。 我们的应用程序使用多个域名。

我们发现将这些行添加到server.xml就足够了:

  scheme="https" proxyPort="443" 

proxyName不是必需的,也没有任何其他更改,不论是对于tomcat还是对nginx。