Nginx安装与配置(Nginx服务器和Tomcat服务器是不同的服务器)

时间:2020-12-14 07:30:57

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