nginx反向代理配置
nginx作为web服务器一个重要的功能就是反向代理。
当然你也可以使用nginx配置正向代理,本是介绍如何配置nginx的反向代理。
nginx反向代理的指令不需要新增额外的模块,默认自带proxy_pass指令,只需要修改配置文件就可以实现反向代理。
什么是反向代理服务器
反向代理功能是nginx的三大主要功能之一(静态web服务器、反向代理、负载均衡)。nginx一般同时做为静态web服务器和反向代理服务器,做为web服务器访问静态文件图片、css、js、html等文件,做为反向代理服务器把请求发给后端业务处理服务,如果有多个后端处理节点,会配置负载均衡功能。
反向代理服务器是一种代理服务器,用于管理从外部网络到内部网络的连接或任何特定请求。它保护、路由和管理从外部网络到内部网络、Web服务器或专用网络的流量。
外网客户机:我们平时打开浏览器输入网址访问blog.redis.com.cn的场景中,我们的笔记本就可以理解为一个外网客户机。
nginx反向代理服务:浏览器输入网址并回车后,会发起一个http请求给nginx(反向代理服务器),这个请求如果是访问静态文件,那么nginx作为web服务器直接返回请求的内容,如果是访问的后台服务逻辑,那么nginx把请求转发给后端的服务处理。
内网web服务:后端的服务可以是很多种类型,LNMP环境下的php-fpm进程,Java环境下的tomcat、jetty等容器,通过程序逻辑处理http请求,生成html页面或者json串返回给客户端。对于小型应用,后端服务可以和nginx部署在同一台机器上。
反向代理服务器的好处
nginx反向代理重要的作用是配合upstream实现负载均衡。
同时增加安全性,客户端不能直接访问后端服务,多了一个中间的屏障。
提升性能,通过异步非阻塞的方式把请求传给后端,提升了并发处理能力。
也可利用缓存、压缩响应提高响应速度。
nginx如何配置反向代理
nginx反向代理不需要编译额外的模块,默认自带proxy_pass和fastcgi_pass指令,通过在location配置块中增加指令就可以实现反向代理功能。
以blog.redis.com.cn为例,这个网站用的wordpress程序,wordpress是php语言编写,那么需要通过php运行环境,可以选择apache的php扩展或者php-fpm环境,主流的选择是php-fpm,php-fpm设置为Unix socket模式或者ip:端口模式 。
Unix socket后端服务配置
1 2 3 4 5 6 7 8 |
server { listen 80; server_name blog.redis.com.cn nginx.cn; location /app { fastcgi_pass unix:/tmp/php-cgi.sock; } } |
ip端口后端服务配置
1 2 3 4 5 6 7 8 |
server { listen 80; server_name blog.redis.com.cn nginx.cn; location /app { proxy_pass http://127.0.0.1:8080; } } |
proxy_pass和fastcgi_pass区别
对于上面介绍的两种情况下proxy_pass和fastcgi_pass可以互相替代使用,不过两者还是有区别的,从名字我们就可以看出来,fastcgi_pass是用来反向代理fastcgi协议,proxy_pass可以代理包括fastcgi协议在内的其它协议。
例如镜像一个网站,这种情况下就需要proxy_pass:
1 2 3 |
location /{ proxy_pass http://www.baidu.com; } |
@网友1
是的
这是哪个版本的NGINX啊
@chenhe
大哥说白了,反代的作用就是负载均衡,在NG+tomcat 的 组合上来说。只是 前段的nginx 顶并发的效果更好。
@mood
大神,加了。你同意一下吧。
我不怎么看的懂,能不能给你的一个联系方式。可以具体的问你一下
加qq 8600-17-36
没图看不懂
写的实在是垃圾至极!!!
写得一坨屎
@常常乐乐
傻吊
nice job!
@常常乐乐
老哥稳。
@常常乐乐
你连这都看不懂还出来指责别人。。。悲哀
@常常乐乐
前面的理解了再学后面的就不会这样提问题了
然后就可以新建一个vhost.conf,加入如下内容,记得修改ip和域名为你的ip和域名。
这个不是Apache虚拟域名设置的吗?
你这个设置要怎么搭配?
修改nginx.conf,添加 include quancha.conf 到http{}段, reload nginx就可以了。
quancha.conf 文件是从哪里冒出来的?内容是什么?reload nginx如何reload?
就这水平还写教程?你以为刚学的都像你一样这么懂?那还看你这教程搞毛线?
quancha.conf就是页面中的内容。
被搞蒙了,感觉这不就是负载均衡么,弄得我以为要载入两个server。。。果然我还是太小白了
写的不错
打回去重写~
嘿嘿,反想代理时nginx最基本的配置,如果对nginx的配置了解很容易,最好指出来哪里不容易理解,这样我好修改,嘿嘿
步骤不清晰,流程不完善,没有测试方法。
说的不太清晰啊
你好,请问下nginx作文件上传反向代理时候 由于proxy_buffer_size的问题 后端程序获取到的数据有问题, 查了很多 都么有介绍关闭buffer功能。能否关闭 proxy_buffer_size呢?
教程可以写得这样,看了跟没看一样,也算是难为你了。
u can u up
你这都看,也是蛮拼的
没有缓存相关配置么,我的怎么配置了 动态页面缓存不了 把php.ini中session.cache_limiter=nocache 修改为public就可以,但是所有的页面都缓存了
使用nginx做反向代理带来性能大幅下降 怎么办 这是webbench做的压力测试
Speed=306596 pages/min, 2227931 bytes/sec.
这是不用代理是的性能
使用ngnix反向代理后
Speed=7298 pages/min, 47969 bytes/sec.
如果单单用反向代理,就有点类似脱裤子放屁。反向代理的背后是负载均衡。
可以写清楚点, ,反向代理的实际应用是个啥。
打回去重写
嘿嘿,哪里有问题呢?
这个只是基本配置,对于普通用户来不可能大而全,能用上我觉得就可以,碰到具体问题具体分析。
如果有更好的教程,欢迎指教。
对了,一台是ubuntu,一台是centos6.4 .
nginx版本1.0.6
我的nginx做反向代理后端的8089端口(这个原来的运维做的),然后我想再做一个nginx弄HA,现在是我的nginx搭建好了,配置文件全部copy那台nginx的,80端口代理的能正常访问,8089端口代理的不能访问,原来那台还配置了memcached,是不是因为这个的问题呢?
得把你配置贴出来看看
没说为啥要这么做