本文使用的Linux发行版:CentOS6.7 下载地址
一、安装Nginx
下载源:
1
| wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
|
安装源:
1
| yum install nginx-release-centos-6-0.el6.ngx.noarch.rpm
|
安装Nginx:
启动Nginx服务:
停止Nginx服务:
重启Nginx服务:
查看Nginx运行状态:
检查Nginx配置文件:
服务运行中重新加载配置:
添加Nginx服务自启动:
二、修改防火墙规则
修改Nginx所在主机的防火墙配置:vi /etc/sysconfig/iptables,将nginx使用的端口80添加到允许列表中:
1
| -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
|
修改Tomcat所在主机的防火墙配置:vi /etc/sysconfig/iptables,将tomcat使用的端口8080添加到允许列表中:
1
| -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
|
如果主机上有多个tomcat的话,则按此规则添加多条,修改对应的端口号即可。
保存后重启防火墙:
1
| service iptables restart
|
三、Tomcat负载均衡配置
Nginx启动时默认加载配置文件/etc/nginx/nginx.conf,而nginx.conf里会引用/etc/nginx/conf.d目录里的所有.conf文件。
因此可以将自己定制的一些配置写到单独.conf文件里,只要文件放在/etc/nginx/conf.d这个目录里即可,方便维护。
创建tomcats.conf:vi /etc/nginx/conf.d/tomcats.conf,内容如下:
1 2 3 4 5 6
| upstream tomcats { ip_hash; server 192.168.0.251:8080; server 192.168.0.251:8081; server 192.168.0.251:8082; }
|
修改default.conf:vi /etc/nginx/conf.d/default.conf,修改如下:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://tomcats; }
|
保存后重新加载配置:nginx -s reload
四、静态资源分离配置
修改default.conf:vi /etc/nginx/conf.d/default.conf,添加如下配置:
1 2 3 4 5 6 7 8 9 10
| location ~.*\.(js|css)$ { root /opt/static-resources; expires 12h; }
location ~.*\.(html|jpg|jpeg|png|bmp|gif|ico|mp3|mid|wma|mp4|swf|flv|rar|zip|txt|doc|ppt|xls|pdf)$ { root /opt/static-resources; expires 7d; }
|
五、修改SELinux安全规则
如果访问Nginx时出现502 Bad Gateway错误,则可能是Nginx主机上的SELinux限制了其使用http访问权限引起的,输入命令setsebool -P httpd_can_network_connect 1开启权限即可。
文件/etc/nginx/nginx.conf完整配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| user nginx; worker_processes auto;
error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; worker_rlimit_nofile 100000;
events { use epoll; multi_accept on; worker_connections 1024; }
http { include /etc/nginx/mime.types; default_type application/octet-stream;
sendfile on; server_tokens off;
keepalive_timeout 65;
gzip on; gzip_disable "msie6"; gzip_static on; gzip_proxied any; gzip_min_length 1000; gzip_comp_level 4; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
include /etc/nginx/conf.d/*.conf; }
|
文件/etc/nginx/conf.d/default.conf完整配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| server { listen 80; server_name localhost;
location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://web_servers; }
location ~.*\.(js|css)$ { root /opt/static-resources; expires 12h; }
location ~.*\.(html|jpg|jpeg|png|bmp|gif|ico|mp3|mid|wma|mp4|swf|flv|rar|zip|txt|doc|ppt|xls|pdf)$ { root /opt/static-resources; expires 7d; }
error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; }
}
|
温馨提示:如果执行命令时没有root权限,请在命令前面加上sudo执行。