Nginx反向代理配置详解
Nginx简单的反向代理配置,包括配置文件中各项参数的的注释,好了,开始!
开始首先安装Nginx
一、建立用户和用户组
1 2 |
、/usr/sbin/groupadd www 、/usr/sbin/useradd -g www www |
二、安装Nginx所需的pcre库:
1、 2、 3、 4、 5、 6、 |
http://sourceforge.net/projects/pcre/ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.01.tar.gz tar zxvf pcre-7.9.tar.gz cd pcre-7.9/ ./configure make && make install |
三、安装Nginx
1、 2、 3、 4、 5、 |
下载nginx源码包. tar zxvf nginx-0.7.61.tar.gz cd nginx-0.7.61/ ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module make && make install |
四、配置及配置优化
1、在/usr/local/nginx/conf/目录中修改nginx.conf文件:
vi /usr/local/nginx/conf/nginx.conf (请先做好备份) |
|
#运行用户 user www www; #启动进程数,一般为CPU核数的俩倍。 worker_processes 8; #全局错误日志 error_log /usr/local/nginx/logs/nginx_error.log crit; #PID文件位置 pid /usr/local/nginx/nginx.pid; #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数 (系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀, 所以建议与ulimit -n的值保持一致。 worker_rlimit_nofile 51200; events { #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核, 可以大大提高nginx的性能 use epoll; #单个后台worker process进程的最大并发链接数 worker_connections 51200; } #设定http服务器,利用它的反向代理功能提供负载均衡支持 http { #设定mime类型,文件扩展名与文件类型映射表 include mime.types; default_type application/octet-stream;#默认文件类型 include proxy.conf;#将配置文件单独写,使主配置文件简单明了,此为代理配置文件。 include server.conf;#将配置文件单独写,使主配置文件简单明了,此为定义服务器列表配置文件。 #charset gb2312;#默认编码 server_names_hash_bucket_size 128;#指定服务器HASH表的最大值 #设定请求缓冲 client_header_buffer_size 32k;#上传文件大小限制 large_client_header_buffers 4 32k; #设定请求缓存 client_max_body_size 8m;#设定请求缓存 #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime. sendfile on; tcp_nopush on;#防止网络阻塞 tcp_nodelay on;#防止网络阻塞 #参数加大,以解决做代理时502错误 keepalive_timeout 120; #开启gzip模块 gzip on; gzip_min_length 1k;#最小压缩文件大小 gzip_buffers 4 16k;#压缩缓冲区 gzip_http_version 1.0;#压缩版本(默认1.1,前端如果是squid2.5请使用1.0) gzip_comp_level 2;#压缩等级 gzip_types text/plain application/x-javascript text/css application/xml;#压缩类型,默认就已经包含textml,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。 gzip_vary on; gzip_disable "MSIE [1-6]\.(?!.*SV1)";#对于IE6浏览器,不进行压缩。 #limit_zone crawler $binary_remote_addr 10m;#开启限制IP连接数的时候需要使用 #设定虚拟主机 server { listen 192.168.0.100:80 default; server_name _; #下面对于 / 启用反向代理. location / { if ($host !~* www\.(.*)) { set $host_without_www $1; set $xhost www.$host; rewrite ^(.*)$ http://$xhost$host_without_www$1 permanent; } proxy_pass http://www; #请求转向www 定义的服务器列表,注意在location {} 内。 } #设定查看Nginx状态的地址 location /ns { stub_status on; access_log off; } #设定日志格式 log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for'; #设定access log access_log /usr/local/nginx/logs/access.log access; } } |
2、/usr/local/nginx/conf/server.conf
nginx 代理后端web的配置文件,在主配置文件中已经 include。
upstream www { #weigth参数表示权值,权值越高被分配到的几率越大 server 192.168.0.100:8000 weight=5; server 192.168.0.101:8000 weight=3; } |
3、/usr/local/nginx/conf/proxy.conf
nginx 代理配置,在主配置文件中已经include。
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE_ADDR $remote_addr; proxy_set_header HTTP_CLIENT_IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m;#允许客户端请求的最大单文件字节数 client_body_buffer_size 128k;#缓冲区代理缓冲用户端请求的最大字节数 proxy_connect_timeout 30;#nginx跟后端服务器连接超时时间(代理连接超时) proxy_send_timeout 30;#后端服务器数据回传时间(代理发送超时) proxy_read_timeout 30;#连接成功后,后端服务器响应时间(代理接收超时) proxy_buffers 4 32k;#proxy_buffers缓冲区,网页平均在32k以下的话,这样设置 proxy_buffer_size 16k;#设置代理服务器(nginx)保存用户头信息的缓冲区大小 proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2) |
以上配置完毕,重新启动nginx. 做验证即可….
OK , 到此结束!