使用Nginx反向代理的一些小记...
Posted 迪亚波罗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Nginx反向代理的一些小记...相关的知识,希望对你有一定的参考价值。
先来讲一下配置:
服务器 单核2G(*1);
nginx1.12.0;
对的,就是辣么简单,就是辣么任性,有时候我们总把事情想的太复杂,那是因为你都没有去做过,便妄下断言。而当你真正去做了之后才知道事情远没有我们想象的复杂......当然没有Nginx的强大想完成我们的目标也不是不行,但别忘了还有学习成本,确实我们有大量的时间,但是却没有时间可供我们去挥霍,把拥有的时间用在“正事”上,这听起来没毛病。
正如人生,我们总是在不对的尝试,在感觉是一条对的道路上愈走愈远,直至交叉路口。
话不多说,马上进入主题。一开始我通过Nginx.org找到Nginx的upstream模块配置方法,准确的说这是Nginx Load Balancing(负载均衡),接下来我就二话不说开干了,在访问域名显示的目标服务器上的Nginx欢迎信息时我是比较欢喜的,我在心里想着:第一次就Success了,太Cool了。但是总感觉哪里不对劲,对啊,我是要代理网站的内容呈现啊,你给我Nginx Server的欢迎界面干么,和你很熟啊?
继续改进,这次我用到了群面向编程,向大神请教,他一看我的Nginx前端配置就问我:你要Load Balancing吗?我说不啊,我只要代理这一个Features。他说那你按我的来,嗖嗖的给我发来一段配置,如下:
servver {
listen 80;
server_name $host;
location / {
proxy_pass http://xxx.com/;
proxy_set_header Host $host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60;
proxy_read_timeout 600;
proxy_send_timeout 600;
}
我一看,得,这是根本不需要用Upstream模块啊,看来我是老孔雀开屏——自作多情。修改了我的配置后继续进行访问域名测试,咦,怎么还是Nginx的欢迎界面,我TM真和你不是很熟......仔细想想,时间如白驹过隙,眨眼30min过去了,才想到我代理的只是AWS给我的CNAME,但是目标服务器(美东)上并没有什么写具体的接受我代理的Nginx配置啊,那就写上呗,目标服务器上Listen 80 Port,server_name修改为测试域名。
再测试,O了,可以正常访问了。我的心里长长的出了一口气,终于......
是日,客户突然Call过来,说我的网站怎么无法访问了,一访问就跳到你们的官网了,当时我就想到是昨晚做反向代理时没有配置SSL证书,所以解析过去的域名不能正确的访问到客户网站的内容。我想这不行啊,虽然网站还没正式上线,但总得让客户随时都可以访问的状态吧,那我就信誓旦旦的说,明天准好。确实有了底气就是不一样,神清气爽的。
晚上回来接着研究,在网上找到了以下解决方案,即最终解决方案,话不多说,上Code:
server {
listen 80;
server_name dayal-timber.com www.dayal-timber.com;
if ( $scheme = http ) {
return 301 https://www.dayal-timber.com$request_uri;
}
}
server {
listen 443;
server_name dayal-timber.com www.dayal-timber.com;
access_log logs/ssl-access.log;
error_log logs/ssl-error.log;
ssl on;
ssl_certificate /usr/local/nginx/ssl/dayal-timber/214176381230424.pem;
ssl_certificate_key /usr/local/nginx/ssl/dayal-timber/214176381230424.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
proxy_pass https://CNAME;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60;
proxy_read_timeout 600;
proxy_send_timeout 600;
}
}
再测试访问,OK,Perfect。不过事情还没有结束,明天接着测试使用Hong Kong服务器代理看看效果。正所谓人生总需尝试,不尝试就妄下结论,那不是睿智,最起码在我看来是二逼。
总结一下:Reverse Proxy这条路是对的,就看怎么走,在老铁看来是没毛病的。今天看了V社的一个帖子,说他们公司的测试太NB了,一段功能测试出57个BUG,下面评论说哥们你遇上贵人了......
我想真是贵人相助了......
以上是关于使用Nginx反向代理的一些小记...的主要内容,如果未能解决你的问题,请参考以下文章