您的位置:首页 > 运维架构 > 反向代理

使用Nginx实现反向代理和负载均衡

2017-11-08 19:44 645 查看
开发互联网项目基本上就不得不使用到nginx,这里自己对nginx做一个总结。

ngnix是俄罗斯开发的一个轻量级的web服务器,优点就是占用内存少,并发处理能力强,目前国内大部分互联网项目都是使用到ngnix。

核心功能:分发请求。分发请求是nginx最核心的功能,是实现ngnix反向代理、负载均衡功能的前提。

一般在项目中,使用ngnix实现两个功能

ngnix作为http服务器

加载远程服务器资源如图片服务器、静态页面时,浏览器不能直接访问这些静态资源,必须遵循http协议,

ngnix就可以作为http服务器遵循http协议实现这些远程服务器资源访问。

ngnix作为反向代理服务器

在正向代理中中间代理服务器对于客户机是可见的(一般需要客户机自己配置),客户机通过代理服务器访问远程服务器,因为代理服务器是暴露状态,网络相对来说不够安全。

反向代理则代理服务器对于客户机是不可见的,一般是跟远程服务器绑定,用户只需要发送请求,不知道是否有通过代理来访问远程服务器,网络相对安全。

ngnix实现负载均衡

负载均衡:将所有请求平均分发到每台服务器。

作用:通过作为反向代理服务器实现,在集群项目中需要用到,提高了项目的并发访问量和容错性,实现项目高可用高并发的需求。

ngnix执行过程

ngnix根目录结构
conf:核心配置文件
html:静态资源
sbin:执行命令文件


在conf目录下,有一个ngnix.conf文件,这个文件就是ngnix的核心配置文件,里面配置了ngnix服务端口,定位范围资源的路径,在ngnix启动的时候,就会默认该配置文件,对于ngnix的反向代理和负载功能的配置也是通过配置这个文件来实现的。

ngnix实现反向代理和负载均衡配置示例

配置ngnix也就是配置conf目录下的ngnix。conf配置文件。

实现两个不同服务器反向代理

worker_processes  1;
events {
worker_connections  1024;
}

http {
include       mime.types;
default_type  application/octet-stream;
sendfile        on;
keepalive_timeout  65;

upstream e3mall{
server 192.168.66.66:9001;
}

upstream jd{
server 192.168.66.66:9000;
}
server {
listen       80;
server_name  www.e3mall.cn;
location / {
#root   html;
#index  index.html index.htm;
proxy_pass http://e3mall; }
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   html;
}
}

server {
listen       80;
server_name  www.jd.com;
location / {
#root   html-81;
#index  index.html index.htm;
proxy_pass http://jd; }
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   html;
}
}
}


在server在声明代理地址 proxy_pass http://e3mall;再通过upstream e3mall{ }配置好实际的ip地址。

实现负载均衡

worker_processes  1;

events {
worker_connections  1024;
}

http {
include       mime.types;
default_type  application/octet-stream;
sendfile        on;
keepalive_timeout  65;

upstream e3mall{
server 192.168.66.66:9000 weight=2;
server 192.168.66.66:9001 weight=1;
server 192.168.66.66:9002 weight=1;
}

server {
listen       80;
server_name  www.e3mall.cn;
location / {
#root   html;
#index  index.html index.htm;
proxy_pass http://e3mall; }
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   html;
}
}
}


先使用反向代理 proxy_pass http://e3mall ,在通过upstream e3mall{ }配置负载均衡的几个服务器IP地址,weight表示在分发请求的占比,越高表示分到的请求越多,默认可以不写,以轮询的方式分发请求。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息