开发互联网项目基本上就不得不使用到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表示在分发请求的占比,越高表示分到的请求越多,默认可以不写,以轮询的方式分发请求。