Linux环境下安装 Nginx 及使用其配置反向代理、负载均衡

RT

Linux 版本: CentOS-6.4-x86_64

一 安装

对于Centos版本的Linux环境下,yum源未提供nginx的安装,可通过切换yum源的方法获取安装,也可通过直接下载安装包的方法,以下命令均需root权限执行:
首先安装必要的库(nginx中gzip模块需要zlib库,rewrite模块需要pcre库,ssl功能需要openssl库)。选定/usr/local为安装目录,以下具体版本号根据实际改变。

1. 安装 openssl 库

本人之前在安装 Mysql 时安装过。若没安装,下载 openssl-1.0.1e-57.el6.x86_64.rpmopenssl库下载),安装过程见 Linux下mysql的安装过程 中。

2.安装 pcre 库

我们可以使用rpm 命令 rpm -qa pcre 进行查询是否已安装pcre
若未安装,或版本不匹配(本人使用pcre-8.36的版本),两种安装方式: 如下:
方式一(手动安装):
下载 pcre-8.36.tar.gz
解压 tar -zxvf pcre-8.36.tar.gz 到目录 /usr/pcre-8.36/(先创建pcre-8.36目录)
cd pcre-8.36
依次执行命令 ./configuremakemake install

方式二:(依次执行以下命令)

cd /usr/pcre/(先创建pcre目录)
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz
tar -zxvf pcre-8.36.tar.gz
cd pcre-8.36
./configure
make
make install

报错及解决方案:
(1)若报错缺少 libpcre.so.0 ,需下载 pcre-7.8-7.el6.x86_64.rpm 安装。
复制到路径后,执行命令:rpm -ivh pcre-7.8-7.el6.x86_64.rpm

(2)若在执行命令 ./configure 报错
configure: error: You need a C++ compiler for C++ support.
解决办法 yum install -y gcc -c++

3. 安装zlib库
    cd /usr/zlib/(先创建zlib目录) 
	wget http://zlib.net/zlib-1.2.8.tar.gz
	tar -zxvf zlib-1.2.8.tar.gz
	cd zlib-1.2.8
	./configure
	make
	make install
4.安装ssl
cd /usr/ssl/(先创建ssl目录)
	wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz
	tar -zxvf openssl-1.0.1j.tar.gz
	cd openssl-1.0.1j
	./config
	make
	make install
5.安装Nginx
    cd /usr/nginx(先创建nginx目录)
	wget http://nginx.org/download/nginx-1.8.0.tar.gz
	tar -zxvf nginx-1.8.0.tar.gz
	cd nginx-1.8.0  
	./configure --prefix=/usr/local/nginx
	make
	make install

启动 Nginx

/usr/local/nginx/sbin/nginx

报错:
Nginx启动提示找不到 libpcre.so.1 解决方法,或提示没有此命令或目录
执行命令 [root@z ~]# ln -s /usr/local/lib/libpcre.so.1 /lib64
重新启动nginx即可


访问

直接输入Nginx 服务器ip即可。
无法访问的解决方案:
在linux上搭建上nginx服务器后,启动nginx,在windows输入linux ip访问失败,原因就是所有访问的默认端口都是80,而在linux防火墙没有配置让80端口访问,那么在windows上就会失败。
解决方法:
在linux终端输入: vim /etc/sysconfig/iptables。进入编辑界面,这个时候要想编辑内容,按字母 ‘o’。之后配置即可:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
按 ‘ESC’键退出编辑模式,按 :wq! 退出并保存。 再使用 /etc/init.d/iptables restart
命令重启防火墙配置生效即可。


常用命令

启动:
/usr/local/nginx/sbin/nginx
重启:
/usr/local/nginx/sbin/nginx -s reload
停止:
/usr/local/nginx/sbin/nginx -s stop
测试配置文件是否正常:
/usr/local/nginx/sbin/nginx -t


反向代理配置

nginx.conf 原配置

location / {
            root   html;
            index  index.html index.htm;
        }

反向代理配置如下

server_name  123.ztest.com;
        location / {
            proxy_pass http://192.168.123.123:8080/ztest_web/;
            index index.html index.htm;
        }

在客户端(本机windows)host文件中,配置

192.168.123.123 123.ztest.com

访问 123.ztest.com 即是访问http://192.168.123.123:8080/ztest_web/index
访问 123.zlf.com/indexTest 即是访问 http://192.168.123.123:8080/ztest_web/indexTest


使用 nginx 解决跨域问题

前端ajax访问请求域名与浏览器访问的域名地址不一致时,存在跨域问题。
跨域问题的解决方案有很多,比如:
jsonp(支持get请求、不支持post请求)
httpclient 进行内部转发
使用http响应头允许跨域问题
使用Nginx搭建企业api接口网关
使用Spring ZULL 接口网关

如何使用Nginx搭建接口网关?
Nginx 接口网关拦截所有请求,进行分发。
实现原理:利用域名相同、项目名不同的特征,由Nginx拦截后,跳转到真实的地址。
配置:如A、B两个项目,域名为 123.ztest.com,在 nginx.cnf 中配置如下:

server {
        listen       80;
	server_name  123.ztest.com;
        location /A {
		proxy_pass  http://a.a.com:81/A;
			index  index.html index.htm;
        }
		location /B{
		proxy_pass  http://b.b.com:81/B;
			index  index.html index.htm;
        }
    }

负载均衡

即增加 upstream backserver 的配置
①轮询机制:

upstream backserver { 
	server 192.168.123.123:8080; #不能配置具体的项目
	server 192.168.123.124:8080; 
   } 

   server {
        listen       80;
	server_name  123.ztest.com;
        location / {
            proxy_pass http://backserver;
            index index.html index.htm;
        }
    }

②权重机制

upstream backserver { 
	server 192.168.123.123:8080 weight=2; 
	server 192.168.123.124:8080 weight=4; 
    } 

**注意:**权重是个比例关系,上述配置,即访问123为1次后,访问124两次,依次轮换。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值