nginx反向代理服务器的配置及管理

来源:互联网

一、引言

Nginx介绍
Nginx发音为[engine x],是由俄罗斯人Igor Sysoev建立的项目,基于BSD许可。
据说他当初是F5的成员之一,英文主页:http://nginx.net/ 俄罗斯的一些大网站已经使用它超过两年多了, 一直表现不凡,从nginx的维基百科网站也能了解到,国内很多的大型门户网站已经都在使用,比如网易、新浪、腾讯等。所以nginx的使用已经有一些成功的案例,这为我们使用这个代理软件提供了很好的背景。

二、反向代理服务器的作用

目前来说反向代理服务器基于安全和性能两个主要的方面考虑,下面是一个反向代理的拓扑模型:

wps_clip_image-7926

2.1基于安全:

云客户端发来的请求不是直接的与内容服务器、数据库或者应用通信,他们首先到达反向代理服务器,防火墙只授信反向代理服务器与内容服务器等的内部真实服务器的通信,这样就使得内部真实的服务器受到了保护,代理服务器成为一道屏障,来自云端的攻击最多到达反向代理这个环节。

2.3 基于性能

起到高速缓冲加速的功能。反向代理服务器可以在实现缓存云端访问实际应用过程中各种数据,当云端用户访问的数据已经在反向代理中缓存,那么反向代理会很快响应用户的请求,而不必转发请求到真实的内部服务器上去再次提取。对于应用来说这样的架构就起到了一个加速缓冲的作用。

三、Nginx的安装

下载nginx的源包:http://www.ngin.org 下载当前稳定版

解包:tar zxvf **.tar.gz或者tar –xvf **.tar.gz

进入加压后的包,执行安装配置:

1. ./configure \

2.         --prefix=/usr/local/php-fcgi \

3.         --with-web_mail \

4.         --with-http_ssl_moudel \

5.         --enable-fastcgi \

6.         --enable-discard-path \

7.         --enable-force-cgi-redirect \

8.         --with-config-file-path=/usr/local/php-fcgi/etc \

9.         --enable-zend-multibyte \

10.         --with-mysql=/usr/local/mysql \

11.         --with-libxml-dir=/usr/local/libxml2 \

12.         --with-gd=/usr/local/gd2 \

13.         --with-jpeg-dir \

14.         --with-png-dir \

15.         --with-bz2 \

16.         --with-freetype-dir \

17.         --with-iconv-dir \

18.         --with-zlib-dir  \

19.         --with-openssl=/usr/local/openssl \

20.         --with-mcrypt=/usr/local/libmcrypt \

21.         --enable-sysvsem \

22.         --enable-inline-optimization \

23.         --enable-soap \

24.         --enable-gd-native-ttf \

25.         --enable-ftp \

26.         --enable-mbstring \

27.         --enable-exif \

28.         --disable-debug \

29.         --disable-ipv6

30.

对于我们的nginx最主要的是需要这两个参数:

31.         --with-web_mail \

32.         --with-http_ssl_moudel \

编译:

make

安装:

make install

四、nginx配置

修改配置文件:/etc/nginx/conf/nginx.conf 路径在安装路径下,我在其中做详细解析;

将下面的“worker_processes  1”改成“worker_processes  5”。

user  nginx nginx;   //如果为nginx设置了相应的用户和组,需要在这里设定

worker_processes  1; //启动进程,这个可以根据nginx所在服务器的配置设定

//日志的记录格式,下面是针对error日志

error_log  logs/error.log;

error_log  logs/error.log  notice;

error_log  logs/error.log  info;

pid   logs/nginx.pid;   //pid文件放置的位置

//工作模式及连接数上限,这个结合操作系统限制上限来设置

events {

use epoll;

worker_connections  1024;

}

//配置邮件代理服务

mail {

auth_http  127.0.0.1:8080/mail/auth.php;  //pop、smtp、imap等用户跳转验证脚本页面

pop3_capabilities  "TOP"  "USER";

imap_capabilities  "IMAP4rev1"  "UIDPLUS";

server {

listen     110;

protocol   pop3;

proxy      on;

}

server {

listen     143;

protocol   imap;

proxy      on;

}

server {

listen     25;

protocol   smtp;

proxy      on;

}

}

//配置http代理服务的部分

http {

include  mime.types; // mime.types设置访问的文件类型

default_type  application/octet-stream;

//设定客户端响应超时大小等策略

client_header_timeout 3m;

client_body_timeout 3m;

send_timeout  3m;

sendfile   on;

tcp_nopush   on;

tcp_nodelay  on;

keepalive_timeout  65;

//反向代理虚拟主机设定

server {

listen       80; //反向代理监听80端口

server_name  mail.hxb.com.cn;  //反向代理域名

location / {

proxy_pass         http://smtp.hxb.com.cn/; //访问mail.hxb.com.cn方向代理会转向到的实际服务域名http://smtp.hxb.com.cn/

proxy_redirect default;

}

}

//下面和上面类似,只是建立了多个虚拟主机

server {

listen       80;

server_name  mail1.hxb.com.cn;

location / {

proxy_pass         http://mail1.hxb.com.cn/;

proxy_redirect default;

}

}

server {

listen       80;

server_name  mail2.hxb.com.cn;

location / {

proxy_pass         http://mail2.hxb.com.cn/;

proxy_redirect default;

}

}

server {

listen       80;

server_name  mail3.hxb.com.cn;

location / {

proxy_pass         http://mail3.hxb.com.cn/;

proxy_redirect default;

}

}

server {

listen       80;

server_name  mail4.hxb.com.cn;

location / {

proxy_pass         http://mail4.hxb.com.cn/;

proxy_redirect default;

}

}

server {

listen       80;

server_name  mail5.hxb.com.cn;

location / {

proxy_pass         http://mail5.hxb.com.cn/;

proxy_redirect default;

}

}

server {

listen       80;

server_name  mail6.hxb.com.cn;

location / {

proxy_pass         http://mail6.hxb.com.cn/;

proxy_redirect default;

}

}

server {

listen       80;

server_name  124.127.119.132;

location /NginxStatus {

stub_status on;

access_log on;

auth_basic "NginxStatus";

auth_basic_user_file htpasswd;

}

error_page   500 502 503 504  /50x.html;

location = /50x.html {

root   html;

}

}

}

五、Nginx的管理

检查nginx配置文件语法:nginx –t 首先必须定位到启动文件路径下;

检查版本:nginx –v,首先必须定位到启动文件路径下;

检查安装选用的选项:nginx –V

如果nginx被加入到了系统服务启动项中在采用下面的方式:

Nginx的启动和关闭:

Service nginx start

Service nginx stop

如果没有,则进入到nginx的/etc/nginx/sbin路径下:

启动采用./nginx &

关闭采用:kill -9 进程号

通过下面命令查看进程号:ps –ef|grep nginx

六、mail代理服务器代理脚本部署

找到以上脚本处的auth_http  127.0.0.1:8080/mail/auth.php;此脚本为mail代理实现的脚本具体的url位置,官方建议采用php脚本来实现,采用apache作为web引擎。

具体脚本放在apache目录下:/srv/www/htdoc/mail/auth.php

七、Nginx的调优配置

需要测试得知;

有待补充。

 

Author:李洪涛

lht821008@163.com lihongtao@tansun.com.cn

反向代理软件:nginx

发表评论