来源:互联网
一、引言
Nginx介绍
Nginx发音为[engine x],是由俄罗斯人Igor Sysoev建立的项目,基于BSD许可。
据说他当初是F5的成员之一,英文主页:http://nginx.net/ 俄罗斯的一些大网站已经使用它超过两年多了, 一直表现不凡,从nginx的维基百科网站也能了解到,国内很多的大型门户网站已经都在使用,比如网易、新浪、腾讯等。所以nginx的使用已经有一些成功的案例,这为我们使用这个代理软件提供了很好的背景。
二、反向代理服务器的作用
目前来说反向代理服务器基于安全和性能两个主要的方面考虑,下面是一个反向代理的拓扑模型:
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