Nginx 反向缓存代理外网 SSL 站点

简介:

可能用到的参考地址:

cURL for Windows 下载:

http://curl.haxx.se/download/

nginx ssl _module 配置英文参考:

http://auxbuss.com/blog/posts/2011_06_28_ssl_session_caching_on_nginx/

中文的配置nginx ssl _module 的参考:

http://www.cnphp.info/howto-setup-nginx-ssl-reverse-proxy.html

nginx 官方文档 httpSslModule:

http://wiki.nginx.org/HttpSslModule

购买商业 SSL 证书在 nginx 上的配置:

http://zou.lu/nginx-https-ssl-module/

红色部分均为需要根据实际情况修改的内容。

环境:CentOS 5.7, Nginx 1.0.10 Stable

1. 首先编译安装 nginx,参照以往内容,或为了方便起见,可使用 lnmp.org 的一键包;

2. 修改 upgrade_nginx.sh 脚本中的编译参数为:

./configure –user=nginx –group=nginx –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module –with-http_gzip_static_module –with-ipv6 –with-http_sub_module –add-module=../ngx_cache_purge-1.4

ngx_cache_purge 的版本自行验证,下载地址为

http://labs.frickle.com/nginx_ngx_cache_purge/

之后,升级 nginx 版本到最新稳定版。

3. 修改源自 lnmp.org  nginx.conf 的默认配置文件,在 http 段末尾添加:

ssl_session_cache shared:SSL:10m;

ssl_session_timeout 10m;

ssl_ciphers ALL:!kEDH!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

proxy_cache_path /usr/local/nginx/proxy_temp levels=1:2 keys_zone=CACHENAME:10m;

4.  vhost 目录下新建虚拟主机的 nginx 配置文件。

下面是一个例子。这个例子中,将静态内容缓存在 nginx 所在的服务器。

server {  

listen 443 ssl;  

server_name my.ssh.so;  

ssl on;  

access_log /usr/local/nginx/logs/myssh-ssl-access.log;

error_log /usr/local/nginx/logs/myssh-ssl-error.log;


ssl_certificate /usr/local/nginx/conf/ssl/my.ssh.so.crt;  

ssl_certificate_key /usr/local/nginx/conf/ssl/my.ssh.so.key;

keepalive_timeout 60;  


if ($http_Cache_Control = "no-cache") {

       rewrite ^(.*)$ /purge$1 last;

}


location ~ /purge(/.*)

{

       proxy_cache_purge CACHENAME $host$1$is_args$args;

       # Press Ctrl+F5 to purge the proxy_cache manually;

}


location ~* \.(jpg|png|gif|jpeg|css|js|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx)$ {

       proxy_buffering on;

       proxy_pass https://46.21.169.60;

       # Most PHP, Python, Rails, Java App can use this header info:

       proxy_set_header X-Forwarded-Proto https;

       proxy_cache CACHENAME;

       proxy_cache_key $host$uri$is_args$args;

       proxy_cache_valid 200 302 1h;  

       proxy_cache_valid 301 1d;  

       proxy_cache_valid any 1m;  

add_header Nginx-Cache-Status "$upstream_cache_status - from nginx_cache";

}


location / {

       proxy_redirect off;

       proxy_pass https://46.21.169.60;

       proxy_set_header Host $host;

       proxy_set_header X-Real-IP $remote_addr;

       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

       proxy_set_header X-Forwarded-Proto https;

add_header No_Cache "$upstream_cache_status - This page will not be cached.";

}

}  

5. proxy_cache_purge  ACL

由于安全考虑,一般不可能让所有人都能有权限 purge cache,而且 purge 的界面也并不友好。

例:

location ~ /purge(/.*)

{

       allow 127.0.0.1;

       allow 221.221.21.112;

       deny all;

       proxy_cache_purge CACHENAME $host$1$is_args$args;

}

至于 Purge 页面的修改,可以自行修改 ngx_cache_purge 的源码,在此不再细述,况且如果限制了一般客户无法 purge,就根本不需要修改。


6. 附:自签署证书的生成

生成 key:

openssl genrsa -des3 -out my.ssh.so.key 1024

生成 csr:

openssl req -new -key my.ssh.so.key -out my.ssh.so.csr

取消重启 nginx 时会要求输入密钥的提示:

cp my.ssh.so.key my.ssh.so.key.org

openssl rsa -in my.ssh.so.key.org -out my.ssh.so.key

生成最终签署的 crt:

openssl x509 -req -days 365 -in my.ssh.so.csr -signkey my.ssh.so.key -out my.ssh.so.crt


7. 缓存是否命中的检测

例:

-k 参数为忽略 SSL 证书的可信性验证。Miss/Hit 的文字说明可以参见第4部分的具体配置部分。

从上述结果可看出,第一次访问时缓存 MISS,第二次就成功 HIT 了。有兴趣的话还可以在浏览器中打开此链接,purge 之后再次用 curl -I 测试。










本文转自 安安安安森  51CTO博客,原文链接:http://blog.51cto.com/smallc/1230677,如需转载请自行联系原作者
目录
相关文章
|
10月前
|
网络协议 应用服务中间件 网络安全
Nginx,正向代理
本文介绍了Nginx作为HTTPS正向代理的两种方案:HTTP CONNECT隧道(7层)和NGINX stream(4层)。HTTP CONNECT隧道需要客户端手动配置代理,通过CONNECT请求建立隧道;而NGINX stream则更适合透明代理,利用SNI字段实现流量转发。文章详细讲解了两者的原理、环境搭建、使用场景及常见问题,并提供了配置示例和最佳实践建议。内容转载自阿里云开发者社区@怀知的文章,推荐读者参阅原文获取更多信息。感谢您的阅读!
1421 80
Nginx,正向代理
|
7月前
|
缓存 负载均衡 应用服务中间件
Nginx缓存的相关知识
总的来说,Nginx的缓存机制是其高性能的重要保证之一,通过合理的配置和管理,可以使网站的访问速度得到大幅提升。
205 28
|
安全 应用服务中间件 网络安全
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
682 60
|
安全 应用服务中间件 网络安全
配置Nginx反向代理实现SSL加密访问的步骤是什么?
我们可以成功地配置 Nginx 反向代理实现 SSL 加密访问,为用户提供更安全、可靠的网络服务。同时,在实际应用中,还需要根据具体情况进行进一步的优化和调整,以满足不同的需求。SSL 加密是网络安全的重要保障,合理配置和维护是确保系统安全稳定运行的关键。
702 60
|
监控 应用服务中间件 测试技术
确保正则表达式在 Nginx 代理中的准确性和稳定性
【10月更文挑战第19天】总之,正则表达式在 Nginx 代理中具有重要作用,但要确保其准确性和稳定性需要付出一定的努力和关注。通过以上方法的综合运用,我们可以提高正则表达式配置的可靠性,为用户提供更好的服务体验。
|
应用服务中间件 API nginx
使用正则表达式实现 Nginx 代理
【10月更文挑战第19天】在不断发展的互联网技术中,掌握正则表达式在 Nginx 代理中的应用是非常重要的。不断探索和实践,将有助于我们在实际工作中更好地运用这一技术,提升项目的质量和效率。
|
10月前
|
存储 应用服务中间件 Linux
nginx配置证书和私钥进行SSL通信验证
nginx配置证书和私钥进行SSL通信验证
510 4
|
缓存 负载均衡 应用服务中间件
Nginx 实现一个端口代理多个前后端服务
【10月更文挑战第19天】Nginx 的强大功能不仅限于此,它还可以与其他技术和工具相结合,为我们的应用提供更强大的支持和保障。在不断发展的互联网时代,掌握 Nginx 的使用技巧将为我们的工作和生活带来更多的便利和效益。
|
11月前
|
缓存 Java 应用服务中间件
nginx的正向代理和反向代理以及tomcat
Nginx的正向代理和反向代理功能在不同的场景中具有重要作用,正向代理主要用于客户端访问控制和匿名浏览,而反向代理则用于负载均衡和高可用性服务。Tomcat作为Java Web应用服务器,与Nginx结合使用,可以显著提升Web应用的性能和稳定性。通过合理配置Nginx和Tomcat,可以构建高效、稳定和可扩展的Web服务架构。
437 11
|
11月前
|
应用服务中间件 Linux 网络安全
nginx安装部署ssl证书,同时支持http与https方式访问
为了使HTTP服务支持HTTPS访问,需生成并安装SSL证书,并确保Nginx支持SSL模块。首先,在`/usr/local/nginx`目录下生成RSA密钥、证书申请文件及自签名证书。接着,确认Nginx已安装SSL模块,若未安装则重新编译Nginx加入该模块。最后,编辑`nginx.conf`配置文件,启用并配置HTTPS服务器部分,指定证书路径和监听端口(如20000),保存后重启Nginx完成部署。
3649 8