NGINX作为Tomcat的SSL代理

时间:2018-01-22 11:48:35

标签: tomcat nginx-reverse-proxy

我在同一个Linux RH7 EC2主机上安装了Angular站点和Tomcat Web服务应用程序。我正在尝试从Array ( [0] => uploads/projects/pathtofile.jpg [1] => uploads/thumb/projects/pathtofile.jpg ) 提供网站,并通过SSL将/上的任何内容重定向到我的tomcat实例。

通过SSL服务的静态站点工作正常。此外,如果我点击/service也可以正常工作。尝试通过http://mydomain:8080/mytomcatapp设置tomcat应用程序的反向代理,但会产生502个响应。我见过的其他样本对标题等有更多花哨的设置,不确定我是否需要它,建议会很方便。另外我在mytomcatapp的web服务也需要获取参数,所以不确定是否还需要特殊的东西。

nginx conf片段

https://mydomain/service/mytomcatapp

tomcat server.xml代码段

server {
listen       80;
server_name mydomain   ;
root /var/www;
index index.html index.htm;

location / {
    # index  index.html index.htm;
    try_files $uri $uri$args $uri/index.html /index.html =404;
}

location /service {
    proxy_pass http://mydomain:8080;
}

...

注意:nginx conf中的mydomain已从我的真实域中交换(不想在此处发布)。此外,我尝试使用<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" proxyPort="443" scheme="https" /> 属性集的server.xml配置组合,但似乎没有影响它。

谢谢!

2 个答案:

答案 0 :(得分:0)

您是否已实施SSL证书?如果您想使用HTTPS,则需要证书。

答案 1 :(得分:0)

结束了阻止代理的SELinux的增强安全状态。参见:

https://www.nginx.com/blog/nginx-se-linux-changes-upgrading-rhel-6-6/

您需要通过运行以下命令将其设置为许可模式:setenforce 0

作为参考,我在nginx配置中的最终位置块对于其他任何尝试的人来说都是如此,花了一些时间来做对。请注意,locationproxy_pass变量的尾部斜杠非常很重要。

location /service/ {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Proto https;
    proxy_pass http://example.com:8080/;
}