Nginx 是一个很强大的高性能Web和反向代理服务器,它具有很多非常优越的特性。本人目前所在公司也使用nginx,主要用来做负载均衡服务器。同时也可以作为邮件代理服务器。
- 1. nginx的安装。本人安装环境为ubuntu。可以选择编译源码的方式安装,但是比较繁琐。需要安装gzip
ewritessl 等模块。同时下载nginx源码。编译。对于Ubuntu10.04 或者更新的版本,只是如下安装:
1: sudo -s
2: nginx=stable # use nginx=development for latest development version
3: add-apt-repository ppa:nginx/$nginx
4: apt-get update
5: apt-get install nginx
可以安装最新的stable版本。需要在root权限下安装。如果安装过程中出现 add-apt-repository not existing 的错误。可以如下处理:
1: sudo -s
2: nginx=stable # use nginx=development for latest development version
3: echo "deb http://ppa.launchpad.net/nginx/$nginx/ubuntu lucid main" > /etc/apt/sources.list.d/nginx-$nginx-lucid.list
4: apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C
5: apt-get update
6: apt-get install nginx
至此安装完成。
2. nginx的简单实用。首先看一下nginx的位置:
~$ whereis nginx
nginx: /usr/sbin/nginx /etc/nginx /usr/local/nginx /usr/share/nginx /usr/share/man/man1/nginx.1.gz
安装完成之后分别在/usr/sbin/下 etc下等添加了nginx。可以在命令行直接输入nginx启动。
~$ nginx
在浏览器中输入localhost。看到欢迎页。启动成功!
这种启动方式使用的是/usr/sbin/下面的nginx命令。读取的配置是/etc/nginx下面的各种配置。可以简单看下其中的nginx.conf文件。运行是的错误日志等则保存在/var/log/nginx 下面,nginx.pid文件则在/var/run/目录下。下面简单看下nginx.conf文件:
1: user www-data;
2: worker_processes 4;
3: pid /var/run/nginx.pid;
4:
5: events {
6: worker_connections 768;
7: # multi_accept on;
8: }
9:
10: http {
11: sendfile on;
12: tcp_nopush on;
13: tcp_nodelay on;
14: keepalive_timeout 65;
15: types_hash_max_size 2048;
16:
17: include /etc/nginx/mime.types;
18: default_type application/octet-stream;
19:
20: access_log /var/log/nginx/access.log;
21: error_log /var/log/nginx/error.log;
22:
23: gzip on;
24: gzip_disable "msie6";
25:
26: include /etc/nginx/conf.d/*.conf;
27: include /etc/nginx/sites-enabled/*;
28: }
29:
其中定义了一些我们刚才说的文件的位置定义等等。同时在/usr/local/nginx目录下,也有一个nginx。同时其相关的日志文件、配置文件也在这个目录下。在这个目录下启动nginx。也是可以的。
重启或关闭nginx 。其中nginx.pic的路径为你本机环境的路径。
1: //重启
2: kill -HUP ·cat /your dir/nginx.pic
3: //关闭
4: kill ·cat /your dir/nginx.pic
3. 搭建简单的负载均衡服务器的配置。只需要修改nginx.conf 文件来实现。假如我们有一个web项目,部署在两个tomcat中。其中配置文件主要配置项是:
upstream mysvr{
server 192.168.137.1:80 weight=8;
server 192.168.137.1:8080 weight=1;
}
server {
listen 80;
server_name localhost;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~.html$ {
proxy_pass http://mysvr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~*.(jpg|gif|png|css|js) {
proxy_pass http://mysvr;
}
}
其中 upstream mysvr 定义了 服务器的位置及权重。其中权重越高,处理的请求就越多。server栏,配置了监听端口、泛域名、错误页。主要的是location中配置了,所有以.html结尾的请求,交给mysvr处理。mysvr就是我们前面定义的两个服务器,因此所有的.html结尾的请求,都会交给我们定义的两个服务器处理。这是因为我本地项目的spring 的 dispatcher 拦截的是.html请求。同理你可以配置成.do结尾,.jsp结尾。其中location的规则暂且不提。
location ~ .do$ {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ~ .jsp$ {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location ^~/servlets/* {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
启动nginx。输入localhost/dqsjy/main.html。这是我本地测试项目的地址。顺利进入系统。可以分别在两个tomcat里面查看日志。看处理被分配的情况。