1.【nginx-server】将nginx的源代码上传到nginx服务器之中,同时还需要上传一些其他的辅助组件
2.【nginx-server】如果当前的主机上没有特定的编译环境,那么一定要在系统下载如下的环境包:
• apt-get update
• apt-get -y install make g++ gcc libpcre3 libpcrecpp* libpcre3-dev libssl-dev autoconf automake libtool libncurses5-dev libaio.dev
3.【nginx-server】将所有的nginx源代码解压缩到"/usr/local/src"目录之中:
• tar xzvf /srv/ftp/nginx-1.11.3.tar.gz -C /usr/local/src/
• tar xzvf /srv/ftp/echo-nginx-module-0.59.tar.gz -C /usr/local/src/
• tar xzvf /srv/ftp/nginx-upstream-fair-a18b409.tar.gz -C /usr/local/src/
• tar xzvf /srv/ftp/ngx_cache_purge-2.3.tar.gz -C /usr/local/src/
4.【nginx-server】除了要有源代码的支持包之外,还需要配置一个目录,该目录为编译后的Nginx的工作目录:
• mkdir -p /usr/local/nginx/{logs,conf,fastcgi_temp,sbin,client_body_temp,proxy_temp,uwsgi_temp,scgi_temp}
5.【nginx-server】进入到Nginx源代码所在的目录:cd /usr/local/src/nginx-1.11.3/
6.【nginx-server】由于本次使用的Nginx里面需要为其追加一些组件,所以首先需要对Nginx编译进行一些配置:直接将下面这段代码粘贴过去
./configure --prefix=/usr/local/nginx/ \ --sbin-path=/usr/local/nginx/sbin/ \ --with-http_ssl_module \ --conf-path=/usr/local/nginx/conf/nginx.conf \ --pid-path=/usr/local/nginx/logs/nginx.pid \ --error-log-path=/usr/local/nginx/logs/error.log \ --http-log-path=/usr/local/nginx/logs/access.log \ --http-fastcgi-temp-path=/usr/local/nginx/fastcgi_temp \ --http-client-body-temp-path=/usr/local/nginx/client_body_temp \ --http-proxy-temp-path=/usr/local/nginx/proxy_temp \ --http-uwsgi-temp-path=/usr/local/nginx/uwsgi_temp \ --http-scgi-temp-path=/usr/local/nginx/scgi_temp \ --add-module=/usr/local/src/echo-nginx-module-0.59 \ --add-module=/usr/local/src/gnosek-nginx-upstream-fair-a18b409 \ --add-module=/usr/local/src/ngx_cache_purge-2.3
7.【nginx-server】配置完成之后对Nginx进行编译与安装操作:make && make install
8.【nginx-server】当程序编译之后实际上就可以在"/usr/local/nginx"目录里面看见相关的内容,执行启动命令:
• /usr/local/nginx/sbin/nginx
此时Nginx实现的就是一个http服务器的代理机制,可以直接通过浏览器访问(其中的nginx-server为nginx服务器主机地址):http://nginx-server/
Nginx整合Tomcat
说明:本次的运行环境暂时不考虑多台Tomcat集群的配置问题,只考虑由Nginx实现一台单机的Tomcat的代理,如果要想使用Nginx实现代理配置,那么首先需要有一个正常的web项目
1.假设现在部署的Tomcat主机IP地址为:192.168.195.147
• 将"hello"项目打包成一个"hello.war"文件:mvn clean install package;
• 将上传的hello.war文件部署到Tomcat之中:mv /srv/ftp/hello.war /usr/local/tomcat/webapps
• 修改当前主机的Tomcat端口(因为Nginx与Tomcat都争抢了80端口,所以Tomcat要修改端口):
vim /usr/local/tomcat/conf/server.xml
修改内容:<Connector port="8090" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
• 启动Tomcat服务器:/usr/local/tomcat/bin/catalina.sh start
• 浏览器访问地址:http://192.168.195.147:8090/hello
2.此时的Nginx和Tomcat彼此之间没有任何的联系,所以必须修改nginx的配置文件:vim /usr/local/nginx.conf
修改内容: location / { proxy_pass http://192.168.195.147:8090/; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; }
3.此时的Nginx服务已经正在运行中,所以这个时候如果不想先暂停Nginx再重新启动,则可以直接选择加载配置,但是正规的做法都是在加载之前进行配置检查:
• 检查当前的nginx配置是否正确:/usr/local/nginx/sbin/nginx -t
• 当检查通过之后重新加载新的配置:/usr/local/nginx/sbin/nginx -s reload
此时的nginx就可以实现对本地的Tomcat的代理访问,通过在浏览器中输入Nginx执行:http://nginx主机地址/
Nginx负载均衡
说明:使用Nginx有两个主要的操作特点:
• 特点一:可以在一台主机上实现多个域名服务的代理操作
• 特点二:可以实现多台Tomcat的反向代理,实现负载均衡配置
1.【tomcat-server-*】将需要发布的WEB项目分别进行打包,随后上传到不同的Tomcat主机上,并且修改server.xml配置文件,将通过*.war文件直接作为项目的发布;
• 通过ftp工具上传打包完成的"hello.war"文件
• 将此文件移动到Tomcat热部署目录:mv /srv/ftp/hello.war /usr/local/tomcat/webapps/
• 如果要将此文件作为根目录的程序发布,则需要修改server.xml配置文件:vim /usr/local/tomcat/conf/server.xml
<Context path="/" docBase="hello"/><!--hello要与上面打包的项目名称一致-->
• 启动Tomcat服务:/usr/local/tomcat/bin/catalina.sh start
• 打开浏览器访问站点首页:http://Tomcat主机地址/
2.此时的实现同一个服务的Tomcat一共有三台主机,这样一来,对于这三台主机的代理控制操作就需要修改Nginx的配置文件实现:
• 打开Nginx配置文件:vim /usr/local/nginx/conf/nginx.conf
• 追加Tomcat集群配置,首先在server之上追加有一个集群的配置处理项,定义所有主机:
下面三个ip地址是三台tomcat主机的ip地址:
upstream tomcatcluster { server 192.168.195.138:80 weight=3 ; server 192.168.195.139:80 weight=1 ; server 192.168.195.140:80 weight=2 ; }
• 在代理的位置上不要写具体的主机,写上配置的集群名称
location / {
proxy_pass http://tomcatcluster;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ;
}
3.此时的Nginx服务已经正在运行中,所以这个时候如果不想先暂停Nginx再重新启动,则可以直接选择加载配置,但是正规的做法都是在加载之前进行配置检查:
• 检查当前的nginx配置是否正确:/usr/local/nginx/sbin/nginx -t
• 当检查通过之后重新加载新的配置:/usr/local/nginx/sbin/nginx -s reload
此时的nginx就可以实现对本地的Tomcat的代理访问,通过在浏览器中输入Nginx执行:http://nginx主机地址/
4.实际上这个时候也可以针对于集群的环境做一些动态的变更:
upstream tomcatcluster{
server 192.168.195.138:80 weight=3 down;(该主机不再提供具体服务) server 192.168.195.139:80 weight=1 ; server 192.168.195.140:80 weight=2 backup;(当主机忙不过来的时候,此主机提供服务)
}
此时就利用Nginx实现了一个基础的反向代理机制。
数据文件缓存
1.如果要想进行缓存的处理,那么一定要在Nginx主机上追加有一个缓存目录:mkdir -p /usr/data/nginx/{temp,cache}
2.更新nginx.conf配置文件
3.【tomcat-server-*】如果此时要想发现缓存的作用,那么最好的做法是更换当前的显示图片
• scp /usr/local/tomcat/webapps/hello/images/xbwawa.png zookeeper-cluster-b:/usr/local/tomcat/webapps/hello/images/
• scp /usr/local/tomcat/webapps/hello/images/xbwawa.png zookeeper-cluster-c:/usr/local/tomcat/webapps/hello/images/
4.实际上此时由于已经存在了缓存的机制,所以图片是不会进行更新的,这个时候就需要手工清空缓存:
• 浏览器主机地址:http://nginx-server/purge/images/xbwawa.png