nginx安装、nginx反向代理/负载均衡、Lua、LuaJIT、openresty、lua-nginx-module、ngx_devel_kit 的安装

日萌社

人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)


nginx+keepalived:局域网内网和公网外网 搭建nginx HA 双机热备 高可用

nginx 把 POST请求数据 写入到 日志文件中

nginx 自动解压gzip压缩数据的两种方式:nginx自动解压、后台java程序解压

nginx安装、nginx反向代理/负载均衡、Lua、LuaJIT、openresty、lua-nginx-module、ngx_devel_kit 的安装

nginx 配置获取GET请求参数、POST请求参数、nginx配置开启跨域访问、nginx+keepalived配置主备切换/双机热备、nginx优化配置


 

下载连接:

nginx:http://nginx.org/en/download.html
             http://nginx.org/download/
lua-nginx模块安装文件:https://github.com/openresty/lua-nginx-module/tags
lua-zlib模块安装文件: https://github.com/brimworks/lua-zlib/releases
nginx-devel-kit安装文件:https://github.com/simpl/ngx_devel_kit/tags
zlib:http://www.zlib.net/fossils/
lua:http://www.lua.org/ftp/

==========================================

yum install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make readline-devel gcc gcc-c++ lua-devel 
yum install pcre pcre-devel zlib zlib-devel openssl openssl--devel 

命令安装:yum install pcre
    比如我的是安装的:Package pcre-8.32-17.el7.x86_64 already installed and latest version
安装包安装:
    pcre的根目录汇总:./configure && make && make install

==========================================

lua-5.3.5    
 

    tar -zxvf lua-5.3.5.tar.gz
    cd /root/lua
    vim Makefile 把 INSTALL_TOP= /usr/local/ 修改为 INSTALL_TOP=/usr/local/lua
    make linux
    make test
    make install
    
    rm -rf  /usr/bin/lua 预先删除已经存在的lua
    ln -s /usr/local/lua/bin/lua /usr/bin/lua
    ln -s /usr/local/lua/share/lua /usr/share/lua
    把 /usr/share/lua 目录中的 空的5.1文件夹 删除
    
    /etc/profile环境变量配置
            vim /etc/profile
                export LUA_HOME=/usr/local/lua
                export PATH=$PATH:$LUA_HOME/bin
            source /etc/profile 环境变量生效

    lua -v 查看版本号

    创建一个 HelloWorld.lua 文件
    代码如下 print("Hello World!")
    执行以下命令 lua HelloWorld.lua
    输出结果为 Hello World!
    
    lua shell:
        lua
        print("Hello World!")

========================================================


centos 都自带 zlib,命令安装是:yum install zlib zlib-devel 
执行 rpm -qa | grep zlib 查看到
        zlib-devel-1.2.7-18.el7.x86_64
        zlib-1.2.7-18.el7.x86_64
     
如果没有安装 zlib 可以直接下载安装,但是如果已经自带的话,可以选择卸载自带的zlib
比如在重新编译LNMP,发现linux中很多软件对zlib依存都比较大,但是系统中安装的版本都比较低,如果用yum直接升级的话,安装nginx时候没法指定zlib的目录,所以要编译安装zlib。
编译的话,如果能把系统中已经安装的版本替换掉,这样才是最好的。但是由于在编译过程中,很多工具都对zlib有依存,所以掌握顺序非常必要。

    1.tar -zxvf zlib-1.2.9.tar.gz -C /usr/local/src
    2.查看一下zlib安装文件 rpm -ql zlib 可以看到libz.so*库文件在/lib64/目录下
            [root@node2 ~]# rpm -ql zlib
            /usr/lib64/libz.so.1
            /usr/lib64/libz.so.1.2.7
            /usr/share/doc/zlib-1.2.7
            /usr/share/doc/zlib-1.2.7/ChangeLog
            /usr/share/doc/zlib-1.2.7/FAQ
            /usr/share/doc/zlib-1.2.7/README
    3.cd /usr/local/src/zlib
            ./configure --prefix=/usr/local/zlib --libdir=/lib64/
            可以直接加上 --libdir=/lib64/ 直接指定库文件安装位置 

    4.编译:make
            make check
            
    5.卸载自带zli
            掌握这个顺序很有必要,如果卸载早了的话,上一步就会提示失败
            卸载指令 rpm -e --nodeps zlib,卸载完成之后,发现/lib64/目录下,zlib的库文件 libz.so*没有了
            [root@node2 ~]# rpm -ql zlib
            rpm: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
 
    6.cd /usr/local/src/zlib
      make install 安装zlib,安装完成之后,发现/lib64/目录下,有了zlib的库文件
            [root@node2 lib64]# ll libz.so*
            lrwxrwxrwx 1 root root     13 Apr 24 18:00 libz.so -> libz.so.1.2.9
            lrwxrwxrwx 1 root root     13 Apr 24 18:00 libz.so.1 -> libz.so.1.2.9
            -rwxr-xr-x 1 root root 117592 Apr 24 18:00 libz.so.1.2.9
            
      如果zlib安装的是其他版本的话,那么可能会出现 用make install安装zlib,安装完成之后,可以看到/usr/local/zlib/目录下有个lib目录,里面存放的就是zlib的库文件
      vim /etc/ld.so.conf,在下面加入一行/usr/local/zlib/lib/,然后保存退出。用ldconfig重新更新一下cache,这时候再用yum等工具,发现运行正常了,至此,zlib就更新成功。
      
    7.ldconfig 刷新下动态链接库
        vim /etc/ld.so.conf
            include ld.so.conf.d/*.conf
    8.这时候再用yum install命令,发现运行正常

========================================================

LuaJIT
    是一个利用JIT编译技术把Lua脚本直接编译成机器码由CPU运行
    版本:2.0 与 2.1。当前稳定版本为 2.0。
    2.1为版本与ngx_lua将有较大性能提升,主要是CloudFlare公司对luajit的捐赠。

FFI库 是LuaJIT中最重要的一个扩展库。
    1.它允许从纯Lua代码调用外部C函数,使用C数据结构;
    2.就不用再像Lua标准math库一样,编写Lua扩展库;
    3.把开发者从开发Lua扩展C库(语言/功能绑定库)的繁重工作中释放出来;

 

下载LuaJIT:http://luajit.org/download.html
    tar -zxvf LuaJIT-2.0.5.tar.gz
    方式一:
        cd /root/LuaJIT
        make install PREFIX=/root/softs/luajit
        echo "/root/softs/luajit/lib" > /etc/ld.so.conf.d/usr_local_luajit_lib.conf
        ldconfig 刷新下动态链接库
        
        /etc/profile环境变量配置
            vim /etc/profile
                    export LUAJIT_LIB=/root/softs/luajit/lib
                    export LUAJIT_INC=/root/softs/luajit/include/luajit-2.0
            source /etc/profile
            
    方式二:
        cd /root/LuaJIT
        make PREFIX=/usr/local/luajit
        make install PREFIX=/usr/local/luajit
        echo "/usr/local/luajit/lib" > /etc/ld.so.conf.d/usr_local_luajit_lib.conf
        ldconfig 刷新下动态链接库
        
        /etc/profile环境变量配置
            vim /etc/profile
                    export LUAJIT_LIB=/usr/local/luajit/lib
                    export LUAJIT_INC=/usr/local/luajit/include/luajit-2.0
            source /etc/profile
            
    创建文件 hello.lua:代码 print("Hello World")
    执行lua hello.lua
    Lua shell运行:
        lua
        print("Hello World")


 ========================================================
openresty-1.13.6.2.tar.gz
下载:https://openresty.org/cn/download.html
安装:http://openresty.org/cn/installation.html
     

    tar -xzvf openresty-1.13.6.2.tar.gz
    方式一:
        cd /root/openresty
        ./configure --prefix=/root/softs/openresty
        make
        sudo make install
        
     方式二:
        cd /root/openresty
        ./configure --prefix=/usr/local/openresty
        make
        make install

========================================================

单独 nginx 安装

    cd /root/nginx
    ./configure --prefix=/usr/local/nginx
    make
    make install
 


========================================================
    
同时编译安装 nginx 1.8.1、ngx_devel_kit v0.3.1rc1、lua-nginx-module v0.10.14
 

方式一:
    tar -xzvf nginx-1.8.1.tar.gz
    tar -xzvf lua-nginx-module-0.10.14.tar.gz
    tar -xzvf ngx_devel_kit-0.3.1rc1.tar.gz

    cd /root/nginx
    ./configure --prefix=/root/softs/nginx --add-module=/root/lua-nginx-module --add-module=/root/ngx_devel_kit
    make
    make install

    可以直接用 ldd 命令验证是否链了 libluajit-5.1 这样的 .so 文件,例如: 
    cd /root/softs/nginx/sbin
    ldd nginx | grep lua 得出 libluajit-5.1.so.2 => /root/softs/luajit/lib/libluajit-5.1.so.2 (0x00007fd25016c000)
    
    
方式二:
    tar -xzvf nginx-1.8.1.tar.gz -C /root
    tar -xzvf lua-nginx-module-0.10.14.tar.gz -C /usr/local
    tar -xzvf ngx_devel_kit-0.3.1rc1.tar.gz -C /usr/local
    
    cd /root/nginx
    ./configure --prefix=/usr/local/nginx --add-module=/usr/local/ngx_devel_kit --add-module=/usr/local/lua-nginx-module
    make
    make install

    可以直接用 ldd 命令验证是否链了 libluajit-5.1 这样的 .so 文件,例如: 
    cd /usr/local/nginx/sbin
    ldd nginx | grep lua 得出 libluajit-5.1.so.2 => /usr/local/luajit/lib/libluajit-5.1.so.2 (0x00007f4691db7000)


    

========================================================
 
cd /root/softs/nginx/sbin
./nginx

启动时报错:./nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory
解决:ln -s /root/softs/luajit/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2
ps aux|grep nginx
kill -9 xxx
    


    

浏览器:IP 默认80端口(可以不输入80端口) 显示 Welcome to nginx! 表示正常

问题:页面出现 403 Forbidden 
分析:查看 /root/softs/nginx/logs/error.log 文件得知 Permission denied
        ps aux | grep nginx  发现启动的用户为 nobody
        root     113593  0.0  0.0  33064   872 ?        Ss   15:30   0:00 nginx: master process ./nginx
        nobody   113594  0.0  0.0  33492  1868 ?        S    15:30   0:00 nginx: worker process
解决:
    将nginx.config的user改为和启动用户一致 
    vim /root/softs/nginx/conf/nginx.conf
    将 #user nobody 改为 user root

问题:nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)
分析:当使用非root用户下操作nginx的话,因为Linux只有root用户可以使用1024以下的端口,因此应修改nginx.conf的默认80端口为1024以上的端口号
解决:
    vim /home/gzp/softs/nginx/conf/nginx.conf
    server 
    {
        listen 2000;
    }

 

========================================================


cd /root/softs/nginx/sbin
./nginx
ps aux|grep nginx
kill -9 xxx
浏览器:IP 默认80端口(可以不输入80端口) 显示 Welcome to nginx! 表示正常
 
curl http://www.baidu.com
curl http://192.168.88.102:80 

 
vim /root/softs/nginx/conf/nginx.conf

    server {
        location = /test 
        {
                  content_by_lua '
                      ngx.say("Hello World")
                    ngx.log(ngx.ERR, "err err err")
                '
                ;
        }
    }


    注意:上面最后结尾的 ' 和 ; 两个符号之间 必须换行
    curl http://192.168.88.102:80/test 得出 Hello World
    ngx.say 是 lua 显露給模块的接口。类似的有 ngx.log(ngx.DEBUG, “”),可以在error.log输出调试信息。

    
vim /root/softs/nginx/conf/nginx.conf

    server {
            location = /lua-version 
            { 
                content_by_lua ' 
                            if jit then 
                                    ngx.say(jit.version) 
                            else 
                                    ngx.say(_VERSION) 
                            end 
                        '
                     ; 
            } 
    }


    注意:上面最后结尾的 ' 和 ; 两个符号之间 必须换行
    curl http://192.168.88.102:80/lua-version 得出 LuaJIT 2.0.5
        如果使用的是标准 Lua,访问 192.168.88.102:80/lua-version 应当返回响应体 Lua 5.1
        如果是 LuaJIT 则应当返回类似 LuaJIT 2.0.5 这样的输出。不要使用标准 Lua,应当使用 LuaJIT, 后者的效率比前者高多了。


vim /root/softs/nginx/conf/nginx.conf
    可以调用外部脚本,如同我们写php、jsp应用时,业务脚本单独组织在.php或.jsp文件中一样

    server 
    {
        location = /test2 
        {
                   content_by_lua_file /root/hello.lua;;
        }
    }


    文件hello.lua内容如下:ngx.say("Hello World")
    这里的脚本可以任意复杂,也可以使用Lua 自己的库
    curl http://192.168.88.102:80/test2 得出 Hello World
 
========================================================


安装cmake编译器

    yum install -y gcc gcc-c++ make automake 
    cmake下载:https://cmake.org/files
        wget http://www.cmake.org/files/v2.8/cmake-版本号.tar.gz
        tar -zxvf cmake-版本号.tar.gz
    例如:tar -zxvf cmake-3.14.3.tar.gz
    
    cd /root/cmake
    ./bootstrap
    gmake
    gmake install
    检查cmake安装:cmake --version
    显示 cmake version 3.14.3 表示安装成功
 


========================================================
 

方式一:
    tar -xzvf lua-zlib-1.2.tar.gz
    cd /root/lua-zlib
    cmake -DLUA_INCLUDE_DIR=/root/softs/openresty/luajit/include/luajit-2.1
    make
    cp zlib.so /usr/local/lib
    cp zlib.so /root/softs/openresty/lualib

方式二:
    tar -xzvf lua-zlib-1.2.tar.gz
    cd /root/lua-zlib
    cmake -DLUA_INCLUDE_DIR=/usr/local/openresty/luajit/include/luajit-2.1
    make
    cp zlib.so /usr/local/lib
    cp zlib.so /usr/local/openresty/lualib

========================================================

方式一:
        cd /root/softs/nginx/sbin
        ./nginx
        ps aux|grep nginx
        kill -9 xxx


        vim /root/softs/nginx/conf/nginx.conf
            可以调用外部脚本,如同我们写php、jsp应用时,业务脚本单独组织在.php或.jsp文件中一样

            server 
            {
                location = /test3 
                {
                        content_by_lua_file /root/a.lua;
                }
            }


            

方式二:
        cd /usr/local/nginx/sbin
        ./nginx
        ps aux|grep nginx
        kill -9 xxx
 


        vim /usr/local/nginx/conf/nginx.conf
            可以调用外部脚本,如同我们写php、jsp应用时,业务脚本单独组织在.php或.jsp文件中一样

            server 
            {
                location = /test3 
                {
                        content_by_lua_file /root/a.lua;
                }
            }
 

 

         curl http://192.168.88.101:80/test3 得出  
        cd /usr/local/nginx/logs 目录中 可以查看日志文件 access.log、error.log    
        
        报错:查看 /usr/local/nginx/logs/error.log 文件得知 cannot open /root/a.lua: Permission denied
                ps aux | grep nginx  发现启动的用户为 nobody
                root     113593  0.0  0.0  33064   872 ?        Ss   15:30   0:00 nginx: master process ./nginx
                nobody   113594  0.0  0.0  33492  1868 ?        S    15:30   0:00 nginx: worker process
        解决:
                vim /usr/local/nginx/conf/nginx.conf
                把 #user nobody; 修改为 user root;
 


a.lua

        local zip = require 'zlib'
        local uncompress = zip.inflate()
        local compress = zip.deflate()
        local deflated, eof, bytes_in,bytes_out =compress("asdasdasdasdasdasdasdasdasd", 'finish')
        print(deflated, eof, bytes_in,bytes_out)
        local uss,ret,getin,getout=uncompress(deflated)print(uss,ret,getin,getout)
        print(uss,ret,getin,getout)


        这里的脚本可以任意复杂,也可以使用Lua 自己的库b.lua:    

    local zip = require 'zlib'

    local uncompress = zip.inflate()
    local compress = zip.deflate()
 
    local deflated, eof, bytes_in,bytes_out =compress("asdasdasdasdasdasdasdasdasd", 'finish')
    print(deflated, eof, bytes_in,bytes_out)
    local uss,ret,getin,getout=uncompress(deflated)print(uss,ret,getin,getout)

    print(uss,ret,getin,getout)
            

Nginx

1.环境准备:
	yum install gcc-c++
	yum install -y pcre pcre-devel
	yum install -y zlib zlib-devel
	yum install -y openssl openssl-devel

2.Nginx安装:
	1.tar zxvf nginx-1.8.0.tar.gz
	2.进入nginx-1.8.0目录中,使用 configure 命令创建 makeFile文件(一次性执行下面所有语句):
		./configure \
		--prefix=/usr/local/nginx \
		--pid-path=/var/run/nginx/nginx.pid \
		--lock-path=/var/lock/nginx.lock \
		--error-log-path=/var/log/nginx/error.log \
		--http-log-path=/var/log/nginx/access.log \
		--with-http_gzip_static_module \
		--http-client-body-temp-path=/var/temp/nginx/client \
		--http-proxy-temp-path=/var/temp/nginx/proxy \
		--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
		--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
		--http-scgi-temp-path=/var/temp/nginx/scgi

	3.一次性执行完上面的语句后可以在nginx-1.8.0目录下 看到Makefile文件
	4.编译:make
	5.安装:make install

3.Makefile是一种配置文件:
	Makefile 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,
	哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,
	因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
 
4.configure参数:
	./configure \
	--prefix=/usr \        				指向安装目录
	--sbin-path=/usr/sbin/nginx \        		指向(执行)程序文件(nginx)
	--conf-path=/etc/nginx/nginx.conf \         	指向配置文件
	--error-log-path=/var/log/nginx/error.log \ 	指向log
	--http-log-path=/var/log/nginx/access.log \  	指向http-log
	--pid-path=/var/run/nginx/nginx.pid \        	指向pid
	--lock-path=/var/lock/nginx.lock \         	(安装文件锁定,防止安装文件被别人利用,或自己误操作。)
	--user=nginx \
	--group=nginx \
	--with-http_ssl_module \                 		启用ngx_http_ssl_module支持(使支持https请求,需已安装openssl)
	--with-http_flv_module \                  		启用ngx_http_flv_module支持(提供寻求内存使用基于时间的偏移量文件)
	--with-http_stub_status_module \     			启用ngx_http_stub_status_module支持(获取nginx自上次启动以来的工作状态)
	--with-http_gzip_static_module \   			启用ngx_http_gzip_static_module支持(在线实时压缩输出数据流)
	--http-client-body-temp-path=/var/tmp/nginx/client \ 	设定http客户端请求临时文件路径
	--http-proxy-temp-path=/var/tmp/nginx/proxy \ 		设定http代理临时文件路径
	--http-fastcgi-temp-path=/var/tmp/nginx/fcgi \ 		设定http fastcgi临时文件路径
	--http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \ 		设定http uwsgi临时文件路径
	--http-scgi-temp-path=/var/tmp/nginx/scgi \ 		设定http scgi临时文件路径
	--with-pcre 启用pcre库

5.Nginx启动与访问:
	注意:在 /usr/local/nginx/sbin 目录下执行以下命令
		启动 Nginx:./nginx
		关闭 nginx:./nginx -s stop 或者 ./nginx -s quit
		重启 nginx:./nginx -s reload

	1.启动nginx 之前,上边将临时文件目录指定为/var/temp/nginx/client, 需要在/var 下创建此目录
		mkdir /var/temp/nginx/client -p
	2.进入到Nginx目录下的sbin目录
		cd /usr/local/nginx/sbin
	3.启动Nginx:./nginx
	  修改完nginx.conf配置文件后都要重启:./nginx -s reload
	4.启动后查看进程
		ps aux|grep nginx

	5.地址栏输入虚拟机的IP即可访问(默认为80端口)
		192.168.25.133/index.html 或 http://192.168.25.133 实际访问的是/usr/local/nginx/html/目录下的index.html
		IP后面不写“:端口”的话,默认访问的是80端口,而nginx.conf中配置的所监听的端口也是80端口。

6.Nginx部署“静态化”网页:
	把“静态化”网页都放到 /usr/local/nginx/html/目录下。
	比如把 \pinyougou-page-web\src\main\webapp下的静态化的“商品详情页”文件 放到 /usr/local/nginx/html/目录下,
	浏览器访问:192.168.25.133/静态化的“商品详情页”文件名.html
	IP后面不写“:端口”的话,默认访问的是80端口,而nginx.conf中配置的所监听的端口也是80端口。

7.nginx配置虚拟主机;
	1.端口绑定:
		修改 /usr/local/nginx/conf/nginx.conf下的配置信息如下,
		表示所监听的端口对应的是指定文件夹中的静态化网页文件名.html,
		浏览器访问“nginx所在虚拟机IP:所监听端口” 即能显示指定文件夹中的静态化网页文件名.html
		    	server 
			{
       			 	listen       81; //所监听的端口
        			server_name  localhost;
        			location / 
				{
            				root   文件夹名;//“静态化网页文件名.html”所在“/usr/local/nginx目录下的”文件夹名
            				index  静态化网页文件名.html;//“usr/local/nginx/文件夹名”目录下的 “静态化网页文件名.html”
        			}      
   			 }

    			server 
			{
        			listen       82;//所监听的端口
        			server_name  localhost;
        			location / 
				{
            				root   文件夹名;//“静态化网页文件名.html”所在“/usr/local/nginx目录下的”文件夹名
            				index  静态化网页文件名.html;//“usr/local/nginx/文件夹名”目录下的 “静态化网页文件名.html”
        			}        
    			}

	2.端口绑定的例子:
		1.在/usr/local/nginx/目录下 创建 cart 和 search 文件夹:
			1.将前端静态页cart.html 以及图片样式等资源 上传至  /usr/local/nginx/cart 下

			2.将前端静态页search.html 以及图片样式等资源 上传至  /usr/local/nginx/search 下

		2.修改Nginx 的配置文件:/usr/local/nginx/conf/nginx.conf
		  	把端口绑定到对应的静态化的html文件 
			81端口绑定到 /usr/local/nginx/cart下的cart.html
			82端口绑定到 /usr/local/nginx/search下的search.html

		3.修改完nginx.conf配置文件后都要重启:在 /usr/local/nginx/sbin 目录下执行 ./nginx -s reload
		  	http://192.168.25.133:81/ (默认80端口)访问的是 /usr/local/nginx/cart下的cart.html
		  	http://192.168.25.133:82/ (默认80端口)访问的是 /usr/local/nginx/search下的search.html

 
	2.域名与IP绑定:
		1.一个域名对应一个 ip 地址,一个 ip 地址可以被多个域名绑定,但一个域名不能绑定多个IP。
		  本地测试可以修改 hosts 文件(C:\Windows\System32\drivers\etc)
		  可以配置域名和 ip 的映射关系,如果 hosts 文件中配置了域名和 ip 的对应关系,不需要走dns 服务器。
		  多个域名共用同一个80端口。80端口本身就可以省略,无需在IP后面显式写出,即IP地址的访问 默认访问就是 80端口

		2.修改Nginx 的配置文件:/usr/local/nginx/conf/nginx.conf
			server 
			{
        			listen       80;
        			server_name  域名;
        			location / 
				{
            				root   文件夹名;//“静态化网页文件名.html”所在“/usr/local/nginx目录下的”文件夹名
            				index  静态化网页文件名.html;//“usr/local/nginx/文件夹名”目录下的 “静态化网页文件名.html”
        			}
    			}
    			server 
			{
        			listen       80;
        			server_name  域名;
        			location / 
				{
            				root   文件夹名;//“静态化网页文件名.html”所在“/usr/local/nginx目录下的”文件夹名
            				index  静态化网页文件名.html;//“usr/local/nginx/文件夹名”目录下的 “静态化网页文件名.html”
        			}
    			}
	
		3.例子:
			1.C:\Windows\System32\drivers\etc 添加以下信息:
				192.168.25.133 cart.pinyougou.com
				192.168.25.133 search.pinyougou.com
				192.168.25.133 www.pinyougou.com

			2.修改Nginx 的配置文件:/usr/local/nginx/conf/nginx.conf

			3.修改完nginx.conf配置文件后都要重启:在 /usr/local/nginx/sbin 目录下执行 ./nginx -s reload
		  		cart.pinyougou.com 访问的是 /usr/local/nginx/cart下的cart.html
		  		search.pinyougou.com 访问的是 /usr/local/nginx/search下的search.html
 

8.nginx反向代理
	nginx 反向代理+负载均衡 到 一个/多个 tomcat 或 另外一个/多个 nginx:
		1.nginx反向代理到 tomcat:nginx把接收到的请求发送给tomcat,由tomcat来处理该请求
		  upstream中配置一个以上的 tomcat的IP:端口的话,则为nginx的负载均衡。
		  修改Nginx 的配置文件:/usr/local/nginx/conf/nginx.conf
		  以下为nginx的 反向代理 + 负载均衡 的配置:
    			upstream tomcat-all
			{
	   			server tomcat所在的虚拟机IP:端口;
				server tomcat所在的虚拟机IP:端口;
    			}
    			server 
			{
        			listen       80;
        			server_name  域名;   
        			location / 
				{
            			proxy_pass   http://tomcat-all;
            			index  index.html;
        			}
   			 }

		2.nginx反向代理到 另外一个nginx:nginx把接收到的请求发送给 另外一个nginx,由另外一个nginx把该请求 发送给某个tomcat。
		  upstream中配置一个以上的 nginx的IP:端口的话,则为nginx的负载均衡。
		  修改Nginx 的配置文件:/usr/local/nginx/conf/nginx.conf
    			upstream nginx-all
			{
	   			server nginx所在的虚拟机IP:端口;
				server nginx所在的虚拟机IP:端口;
    			}
    			server 
			{
        			listen       80;
        			server_name  域名;   
        			location / 
				{
            			proxy_pass   http://nginx-all;
            			index  index.html;
        			}
   			 }

	1.反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,
	  并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
	  正向代理是针对客户端,而反向代理是针对服务器。

	2.nginx反向代理到 tomcat:
		nginx反向代理到 tomcat:nginx把接收到的请求发送给tomcat,由tomcat来处理该请求。
		upstream中配置多个tomcat的IP:端口的话,则为nginx的负载均衡。
		修改Nginx 的配置文件:/usr/local/nginx/conf/nginx.conf
		以下为nginx的 反向代理 + 负载均衡 的配置:
    			upstream tomcat-all
			{
	   			server tomcat所在的虚拟机IP:端口;
				server tomcat所在的虚拟机IP:端口;
    			}
    			server 
			{
        			listen       80;
        			server_name  域名;   
        			location / 
				{
            			proxy_pass   http://tomcat-all;
            			index  index.html;
        			}
   			 }
 

		1.把一个 tomcat解压到 /usr/local/tomcat-cluster/下 ;
   		  把 /usr/local/tomcat-cluster/apache-tomcat-1/webapps/ROOT/中原本的文件清空,把以下文件拷贝到ROOT/目录下。

		2.C:\Windows\System32\drivers\etc 添加以下信息:
				192.168.25.133 www.pinyougou.com

		3. /usr/local/tomcat-cluster/apache-tomcat-1/conf/web.xml 中配置有以下默认欢迎页:
			表示访问根路径时,实际默认访问的是以下配置好的欢迎页 
 			<welcome-file-list>
        			<welcome-file>index.html</welcome-file>
        			<welcome-file>index.htm</welcome-file>
        			<welcome-file>index.jsp</welcome-file>
    			</welcome-file-list>

		4.因为后面的还会使用多个tomcat组成一起进行负载均衡,所以先修改此处先修改一下当前的
  		  /usr/local/tomcat-cluster/apache-tomcat-1/conf/server.xml:
			<Server port="8105" shutdown="SHUTDOWN">
			<Connector port="8180" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
			<Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />

		5.启动Tomcat:
			cd /usr/local/tomcat-cluster/apache-tomcat-1/bin/
			./startup.sh

		6.修改Nginx 的配置文件:/usr/local/nginx/conf/nginx.conf

		6.修改完nginx.conf配置文件后都要重启:在 /usr/local/nginx/sbin 目录下执行 ./nginx -s reload
		  	www.pinyougou.com 映射到 192.168.25.133地址的虚拟机上的nginx,
			然后nginx根据浏览器访问的域名“www.pinyougou.com”匹配到“server_name”中的“www.pinyougou.com”,
			继而根据 http://tomcat-portal 映射到 upstream tomcat-portal中的 tomcat的IP“192.168.25.133:8180”

		7.浏览器访问“www.pinyougou.com”,跳转访问到“192.168.25.133:8180”的/webapps/ROOT/目录下的index.html
 

	3.nginx 反向代理+负载均衡 到 多个 tomcat:
		nginx反向代理到 tomcat:nginx把接收到的请求发送给tomcat,由tomcat来处理该请求。
		upstream中配置多个tomcat的IP:端口的话,则为nginx的负载均衡。
		修改Nginx 的配置文件:/usr/local/nginx/conf/nginx.conf
		以下为nginx的 反向代理 + 负载均衡 的配置:
    			upstream tomcat-all
			{
	   			server tomcat所在的虚拟机IP:端口;
				server tomcat所在的虚拟机IP:端口;
    			}
    			server 
			{
        			listen       80;
        			server_name  域名;   
        			location / 
				{
            			proxy_pass   http://tomcat-all;
            			index  index.html;
        			}
   			 }

		1./usr/local/tomcat-cluster/ 目录下已拷贝有3个Tomcat:apache-tomcat-1、apache-tomcat-2、apache-tomcat-3
		  3个Tomcat的 webapps/ROOT/目录下都为如下:

		2.修改每个tomcat下的端口:
			1./usr/local/tomcat-cluster/apache-tomcat-1/conf/server.xml:
				<Server port="8105" shutdown="SHUTDOWN">
				<Connector port="8180" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
				<Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />
			2./usr/local/tomcat-cluster/apache-tomcat-2/conf/server.xml:
				<Server port="8205" shutdown="SHUTDOWN">
				<Connector port="8280" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
				<Connector port="8209" protocol="AJP/1.3" redirectPort="8443" />
			3./usr/local/tomcat-cluster/apache-tomcat-3/conf/server.xml:
				<Server port="8305" shutdown="SHUTDOWN">
				<Connector port="8380" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
				<Connector port="8309" protocol="AJP/1.3" redirectPort="8443" />

		3.启动Tomcat:
			cd /usr/local/tomcat-cluster/apache-tomcat-1/bin/
			./startup.sh
			cd /usr/local/tomcat-cluster/apache-tomcat-2/bin/
			./startup.sh
			cd /usr/local/tomcat-cluster/apache-tomcat-3/bin/
			./startup.sh

		4.修改Nginx 的配置文件:/usr/local/nginx/conf/nginx.conf
		  给某台tomcat设置权重:则访问该台“设置了权重的”tomcat的频率 会是访问“没有设置权重的tomcat的”频率的好几倍。
		  比如:server tomcat的IP:端口 weight=2; 表示访问“当前设置了权重的tomcat的”次数是“访问没有设置权重的tomcat的次数的”2倍
   			upstream tomcat-portal 
			{
				server 192.168.25.133:8180;
				server 192.168.25.133:8280;
				server 192.168.25.133:8380;
    			}
    			server 
			{
        			listen       80;
        			server_name  www.pinyougou.com;
 
        			location / 
				{
            				proxy_pass   http://tomcat-portal;
            				index  index.html;
        			}       
    			}

			
		5.修改完nginx.conf配置文件后都要重启:在 /usr/local/nginx/sbin 目录下执行 ./nginx -s reload
		  	www.pinyougou.com 映射到 192.168.25.133地址的虚拟机上的nginx,
			然后nginx根据浏览器访问的域名“www.pinyougou.com”匹配到“server_name”中的“www.pinyougou.com”,
			继而根据 http://tomcat-portal 映射到 upstream tomcat-portal中,并随机访问多个tomcat中的其中一个tomcat。

		6.浏览器访问“www.pinyougou.com”,随机跳转访问到其中一个tomcat中的/webapps/ROOT/目录下的index.html
 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

あずにゃん

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值