安装环境:
Centos 6.5
nginx-1.12.0.tar.gz
依赖包:
openssl-fips-2.0.16.tar.gz
pcre-8.32.tar.gz
zlib-1.2.11.tar.gz
nginx下载地址:http://nginx.org/en/download.html
nginx官方文档地址:http://nginx.org/en/docs/
安装步骤:
1.必须保证系统中安装了c++编译环境使用命令查看是否安装:
[root@linux ~]# rpm -qa|grep gcc*
libgcrypt-1.4.5-11.el6_4.x86_64
gconfmm26-2.28.0-1.el6.x86_64
libsigc++20-2.2.4.2-1.el6.x86_64
gnome-python2-gconf-2.28.0-3.el6.x86_64
pkgconfig-0.23-9.1.el6.x86_64
gcc-c++-4.4.7-23.el6.x86_64
gcalctool-5.28.2-3.el6.x86_64
crash-gcore-command-1.0-5.el6.x86_64
libgcc-4.4.7-23.el6.x86_64
gcc-4.4.7-23.el6.x86_64
pulseaudio-module-gconf-0.9.21-14.el6_3.x86_64
如果看到有gcc-4.4.7-23.el6.x86_64 和gcc-c+±4.4.7-23.el6.x86_64说明安装成功
2.如果没有安装:
[root@linux ~]# yum install gcc-c++
3.安装模块依赖:
安装顺序为:openssl库 - pcre库 – zlib库
首先解tar
[root@linux software]# tar -zxvf openssl-fips-2.0.16.tar.gz
接着进入解压后的目录执行配置->编译->安装
[root@linux openssl-fips-2.0.16]# ./config
[root@linux openssl-fips-2.0.16]# make
[root@linux openssl-fips-2.0.16]# make install
pcre库和zlib库是一样的安装方式,打开你们的脑洞。。。思考吧!!
4.安装nginx
首先解tar
[root@linux local]# tar -zxvf /usr/local/software/nginx-1.12.0.tar.gz
接下来配置->编译->安装
[root@linux local]# cd nginx-1.12.0
[root@linux nginx-1.12.0]# ./configure
[root@linux nginx-1.12.0]# make
[root@linux nginx-1.12.0]# make install
nginx默认安装目录:/usr/local/nginx
5.开放80端口
[root@linux nginx-1.12.0]# vim /etc/sysconfig/iptables
6.启动nginx
[root@linux nginx-1.12.0]# /usr/local/nginx/sbin/nginx
启动报错
原因就是在lib64目录找不到libpcre.so.1库解决办法:把该库软链到lib64位目录下
首先查找该库的位置:
[root@linux nginx-1.12.0]# whereis libpcre.so.1
然后软链到lib64目录下(相当于快捷方式)
[root@linux nginx-1.12.0]# ln –s /usr/local/lib/libpcre.so.1 /lib64/libpcre.so.1
7.查看是否启动成功:
[root@linux nginx-1.12.0]# ps –ef| grep nginx
ok.恭喜你安装成功!!!
nginx的一些常用命令:
停止:/usr/local/nginx/sbin/nginx –s stop
重启:/usr/local/nginx/sbin/nginx –s reload
检查配置文件(nginx.conf)是否合法:
usr/local/nginx/sbin/nginx –t
nginx的配置文件
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream itripbiz_server{
server 127.0.0.1:8080;
}
server{
listen 80;
server_name itrip.project.bdqn.cn;
root /data/itrip/itripfront;
index index.html;
location / {
}
location /itripbiz {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://itripbiz_server;
}
location ~ .*\.(gif|jpg|png|html|mp3) {
expires 6h;
}
location ~ .*\.(js|css)?$ {
expires 2h;
}
}
}
测试
a.需要创建目录/data/itrip/itripfront ,该目录下有一个文件index.html其内容如下:
<div id="test">============= Nginx Test ================</div>
<script src="jquery-1.7.2.js" type="text/javascript"></script>
<script>
$.ajax({
type:"GET",//请求类型
url:"/itripbiz/servlet/TestServlet",//请求的url
dataType:"json",//ajax接口(请求url)返回的数据类型
success:function(data){//data:返回数据(json对象)
alert(data.flag);
}
});
/*Controller和前台约定传递json格式的数据,因此前台ajax必须传递json格式的数据*/
</script>
同目录下需要jquery-1.7.2.js哦,别忘记了!!!
b.ajax请求的后端地址为 /itripbiz/servlet/TestServlet,所以需要将后端项目打成war部署到tomcat.
我将后端的关键代码贴出来:
TestServlet .java
public class TestServlet extends HttpServlet
{
private static final Logger log = Logger.getLogger(TestServlet.class);
public void destroy()
{
super.destroy();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println(System.getProperty("itripbiz.root"));
System.out.println("");
log.debug("=====>请求进入 doPost");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.print("{\"flag\":\"true\"}");
log.debug("=====>返回{\"flag\":\"true\"}");
out.flush();
out.close();
log.debug("=====>关闭响应流");
}
}
web.xml
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>servlet.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<url-pattern>/servlet/TestServlet</url-pattern>
</servlet-mapping>
c.启动nginx,在浏览器中输入itrip.project.bdqn.cn
看到这个效果就说明反向代理成功!!
接下来测试轮询->热备->权重->iphash:需要配置两个tomcat,配置文件修改入下
轮询配置:
upstream itripbiz_server{
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
效果应该是轮流访问。
热备配置:
upstream itripbiz_server{
server 127.0.0.1:8080;
server 127.0.0.1:8081 backup;
}
效果:如果其中一台服务器宕机,那么可以启用热备。
权重配置
upstream itripbiz_server{
server 127.0.0.1:8080;
server 127.0.0.1:8081 weight=2;
}
效果:8080访问一次,8081访问两次,然后在访问8080一次,8081两次。。依次类推。
ip_hash配置:
upstream itripbiz_server{
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:8081 ;
}
效果:如果第一次访问的8080,那么以后每次都是访问8080,同理第一次访问的是8081,那么以后每次都是访问8081.
ip_hash可以解决tomcat之间session共享问题。
如果以上测试没有问题,那么恭喜你已经会使用nginx 了。。。