Nginx配置问题,如果让外部https请求 内部的web应用

JackZhai. 2017-11-07 01:35:53
公司需要将原http的请求转为https,请问我改如何配置
环境如下
域名 oa.baidu.com
公网IP 220.181.57.217
内网IP(Nginx服务器) 10.250.190.80
Tomcat应用服务器1 10.250.190.81(假设运行应用oa)
Tomcat应用服务器2 10.250.190.82(假设运行应用hr)
现在需要通过域名的4430端口访问各个服务器上的web应用
公网的4430端口已经和内网的10.250.190.80做好映射,证书配置也没问题
我应该如何配置
https://oa.baidu.com:4430/oa/
https://oa.baidu.com:4430/hr/

以下是我配置的,
server {
listen 443;
charset utf-8;
proxy_redirect off;
server_name oa.baidu.com;
ssl on;
root html;
index index.html index.htm;
ssl_certificate cert/oa_baidu_com.pem;
ssl_certificate_key cert/oa_baidu.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;

location ^~ /oa/ {
proxy_pass http://10.250.190.81:8080/oa/;
proxy_set_header Host $http_host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header User-Agent;
}
}

配置好后重启nginx服务器后,访问https://oa.baidu.com:4430/oa/,报错如下
但地址发生了变化,http://oa.baidu.com:443/oa/login
我发现https变成了http,4430端口也变成了443端口,不知道哪里设置错了,请求帮助,感激不尽
...全文
655 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cqyy725 2017-11-13
  • 打赏
  • 举报
回复
引用 1 楼 cqyy725 的回复:
因为不是标准的ssl 443端口访问,你需要加https的,看你报错截图,是没有加https
----------------- proxy_pass http://10.250.190.81:8080/oa/; 你的oa是8080端口, 而你的监听listen又是配置的443端口 建议你把后端tomcat服务器改成标准80端口 tomcat ssl 默认是8443 http 改成80 https 8443 比如现在配置https 在http{ 加入 upstream oa{ server 10.250.190.81:8443; } } server{ listen 8443 ssl; /根据你自己的外网https端口改,建议内外端口一致 ssl on; ssl_certificate /opt/soft/sign/xxx.crt; ssl_certificate_key /opt/soft/sign/xxx.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:-LOW:!aNULL:!eNULL; ssl_prefer_server_ciphers on; server_name softphone.loogear.com; access_log logs/Jsoftphone.access.log main; error_log logs/Jsoftphone.access.log debug; client_header_buffer_size 600k; large_client_header_buffers 4 600k; proxy_pass https://oa; 这是上面upstream的名字 proxy_redirect off; proxy_set_header Host $host:8443; proxy_set_header real_ip_header X-Real-IP; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Refer $http_referer; client_max_body_size 20m; client_body_buffer_size 600k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 100k; proxy_buffers 4 600k; proxy_busy_buffers_size 600k; proxy_temp_file_write_size 600k; } 你也可以不家upstream,加了是方便以后负载均衡,而且便于书写
cqyy725 2017-11-13
  • 打赏
  • 举报
回复
因为不是标准的ssl 443端口访问,你需要加https的,看你报错截图,是没有加https

18,773

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 专题技术讨论区
社区管理员
  • 专题技术讨论区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧