通过Nginx反向代理提供网站内嵌
2019-05-02 12:33
211 查看
通过Nginx反向代理提供网站内嵌
公司需要提供对外服务给合作伙伴,对方公司需要内嵌我方公司网站,确定后决定使用nginx反向代理
实现细节分析
1.配置对方公司域名转发至公司网站
2.修改公司网站中含有公司域名的网站先通过nginx转发
3.修改公司cookie 中的domain 解决cookie跨域问题
4.使用openssl 生成https自签名证书 参考:使用openssl生成自签名证书
配置细节
1.下载nginx源码版:nignx下载地址
wget https://nginx.org/download/nginx-1.15.12.tar.gz # 解压 tar -xf nginx-1.15.12.tar.gz
2.设置编译参数 建议添加 replace-filter-nginx-module 模块,该模块支持正则替换和json替换,如果不需要这些功能仅仅需要替换html 可以仅仅添加http_sub_module这个功能较弱一点 两种方式配置如下
# 1.配置替换模块并编译启动nginx # 使用 replace-filter-nginx-module # 1.安装sregex模块: # github克隆编译 git clone https://github.com/agentzh/sregex cd sregex make make install ldconfig #动态库刷新 否则可能找不到动态库 # 2.下载 replace-filter-nginx-module git clone https://github.com/openresty/replace-filter-nginx-module.git # 3.第三方模块使用add-module ./configure --add-module=/{第二步的下载步骤}/replace-filter-nginx-module --{其他参数} # 使用http_sub_module 非第三方模块直接使用 ./configure --with-http_sub_module --{其他参数} # 编译nginx make & make install # 启动nginx ./nginx
3.nginx.conf 修改
server { # google DNS服务 resolver 8.8.8.8; # 协议端口 根据需要进行实际修改 listen 443 ssl; listen 80; # 使用openssl生成的证书 ssl_certificate /usr/local/software/nginx/ssl/server.crt; ssl_certificate_key /usr/local/software/nginx/ssl/server.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; # 指定密码为openssl支持的格式 ssl_protocols SSLv2 SSLv3 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; # 密码加密方式 ssl_prefer_server_ciphers on; # 代理方域名 server_name ~^(?<domain>[^.]+\.)proxydemo.net$; root /usr/share/nginx/html; location / { proxy_set_header X-Real-IP $remote_addr; # 使用 http_sub_module替换 # sub_filter 'company.net' 'proxydemo.net'; # sub_filter_once off; # 使用 replace-filter-nginx-module替换 replace_filter 'company\.net' 'proxydemo.net' g; replace_filter_types application/json; add_header Access-Control-Allow-Origin '*'; # 被代理源网站 由于代理时使用了表达式 必须配置DNS proxy_pass https://${domain}company.net; # cookie proxy_cookie_domain .company.net .proxydemo.net; proxy_cookie_domain .${domain}company.net .${domain}proxydemo.net; } }
4.重启nginx
nginx -s reload
最后
该配置采坑无数,验证可行出现不可行原因请参照以下解决
1.404: 域名解析
2.登录失败:检查cookie domain
3.https不可用:检查生成openssl时host配置
4.json返回信息不可替换:使用replace-filter-nginx-module替换
相关文章推荐
- 虚拟机CentOS_6.4通过nat方式上网(食用菌百科网站长提供)
- Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能 视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是Flash动画文件,可通过Flash制作的播放器来播
- 通过VisualC#编程编码和解码InfoPath的文件附件--微软网站提供的
- 谷歌关闭Google.cn 通过香港网站提供服务
- 谷歌关闭Google.cn 通过香港网站提供服务
- 写高质量OC代码52建议总结:28.通过协议提供匿名对象
- 通过配置Apache,利用压缩网页来提升网站浏览速度
- 网亚B2B行业网站系统,提供免费下载了!
- 监视Web流量通过网站Analytics(分析)
- Python 通过网站search功能监控网站内容更新
- IP反查网站,ip反查接口,旁站查询接口大全,通过IP查域名汇总:
- 天气预报插件代码--通过传递城市拼音名,最简单的天气插件--更多看2345网站
- 通过服务器系统的软ROUTE服务+NAT提供拨号共享上网(校园版)
- C#发布WebService提供使用时候,通过服务器解决前端js跨域访问问题
- 通过ssh端口转发来上公司禁止的网站(如电商网站)
- 通过iis访问asp.net网站
- Google 向网站管理员提供的信息
- PC使用网线上网的条件下,通过PC的Wifi共享提供手机上网教程
- 用IIS建立的.net网站通过IP地址不能访问解决方法
- 为什么TheBeerHouse的网站可以VS2005下正常编译通过?