Nginx 学习
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器 。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的Rambler.ru 站点开发的,它已经在该站点运行超过四年多了。Igor 将源代码以类BSD许可证的形式发布。自Nginx 发布四年来,Nginx 已经因为它的稳定性、丰富的功能集、 示例配置文件和低系统资源的消耗而闻名了。目前国内各大门户网站已经部署了Nginx,如新浪、网易、腾讯等;国内几个重要的视频分享网站也部署了Nginx,如六房间、酷6等。 新近发现Nginx 技术在国内日趋火热,越来越多的网站开始部署Nginx。
- 当前开发版: Nginx 1.1.5 | Nginx/windows 1.1.5 (更新记录) (2011年10月6日)
- 当前稳定版: Nginx 1.0.8 | Nginx/windows 1.0.8 (更新记录) (2011年10月1日)
A、 download and test.
1:下载,运行其中的nginx.exe,如果在其logs/error.log出现错误:2011/05/11 09:06:22 [emerg] 1140#3156: bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions);则说明80端口被使用,需要停止使用80端口的程序,如果在logs下出现nginx.pid则说明运行成功
2:成功后,在浏览器的地址栏中输入127.0.0.1,出现welcome to nginx,说明可以使用。
B、
nginx对于静态资源的配置
#启动GZIP压缩CSS和JS
gzip on;
# 压缩级别 1-9,默认是1,级别越高压缩率越大,当然压缩时间也就越长
gzip_comp_level 4;
# 压缩类型
gzip_types text/css application/x-javascript;
# 定义静态资源访问的服务,对应的域名:res.abc.com
server {
listen 80;
server_name res.abc.com;
# 开启服务器读取文件的缓存,
open_file_cache max=200 inactive=2h;
open_file_cache_valid 3h;
open_file_cache_errors off;
charset utf-8;
# 判断如果是图片或swf,客户端缓存5天
location ~* ^.+.(ico|gif|bmp|jpg|jpeg|png|swf)$ {
root /usr/local/resource/;
access_log off;
index index.html index.htm;
expires 5d;
}
# 因JS,CSS改动比较频繁,客户端缓存8小时
location ~* ^.+.(js|css)$ {
root /usr/local/resource/;
access_log off;
index index.html index.htm;
expires 8h;
}
# 其他静态资源
location / {
root /usr/local/resource;
access_log off;
expires 8h;
}
}
nginx反向代理设置
# 反向代理服务,绑定域名www.abc.com server { listen 80; server_name www.abc.com; charset utf-8; # BBS使用Discuz! # 因反向代理为了提高性能,一部分http头部信息不会转发给后台的服务器, # 使用proxy_pass_header 和 proxy_set_header 把有需要的http头部信息转发给后台服务器 location ^~ /bbs/ { root html; access_log off; index index.php; # 转发host的信息,如果不设置host,在后台使用request.getServerName()取到的域名不是www.abc.com,而是127.0.0.1 proxy_set_header Host $host; # 因Discuz! 为了安全,需要获取客户端User-Agent来判断每次POST数据是否跟第一次请求来自同1个浏览器, # 如果不转发User-Agent,Discuz! 提交数据就会报"您的请求来路不正确,无法提交"的错误 proxy_pass_header User-Agent; proxy_pass http://127.0.0.1:8081; } # 其他请求转发给tomcat location / { root html; access_log off; index index.jsp; proxy_pass http://127.0.0.1:8080; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }