一、引言
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。
二、应用场景
1.http服务器
Nginx是一个http服务可以独立提供http服务。可以当成网页静态服务器。
2.反向代理
反向代理是针对服务器来说的,一般来说是客户端直接访问服务器,反向代理是客户端 -> Nginx -> 后端服务接口
3.负载均衡
当网站并发量大时,一台服务器已经无法承受,此时需要部署多个服务器来分担压力,这时候可以通过配置Nginx来将请求通过一定分发规则,分发到不同的服务器来达到负载的作用。可以通过反向代理来实现负载均衡。
4.虚拟主机
因为网站访问量大,所以需要负载均衡。然而并不是所有网站都如此出色,有的网站,由于访问量太小,需要节省成本,将多个网站部署在同一台服务器上。
例如将www.spella.com和www.alleps.com两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样,所以叫两个虚拟主机。
5.跨域解决
项目开发过程中,有时候前端服务需要同时访问两个服务的后端接口,两个服务的端口肯定不一样,这时候通过配置Nginx转发就可以实现跨域访问。
三、实际配置
1. 静态页面配置
server {
listen 9090;
access_log logs/host.9090.log;
charset utf-8;
location / {
charset utf-8;
root E:\tmp\web\index; #静态界面路径
index index.html; #默认首页地址
}
}
2.服务转发
server {
listen 9090; #监听端口
access_log logs/host.9090.log ; #日志
server_name www.xxx.com; #可以不写,不写默认当前服务器
# 表示以 spella 开头的地址
location /spella {
proxy_pass http://127.0.0.1:9696;
proxy_set_header Host $http_host ;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# /表示所有地址
location / {
proxy_pass http://127.0.0.1:9898;
proxy_set_header Host $http_host ;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 500 502 503 504 /50x.html;
}
3.WebSocket配置
location / {
...
#其他配置不变,下面添加这两列配置。
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
4.负载均衡
upstream mkj_pools {
server 192.168.1.72:9797 weight=1;
server 192.168.1.73:9898 weight=2;
server 192.168.1.74:9999 weight=3;
#weigth参数表示权值,权值越高被分配到的几率越大
}
server {
listen 80;
server_name www.xxx.com;
location / {
proxy_pass http://127.0.0.1:9595;
}
}
四、常用命令
cd /usr/local/nginx/sbin/
./nginx 启动
./nginx -s stop 停止
./nginx -s quit 安全退出
./nginx -s reload 重新加载配置文件 如果我们修改了配置文件,就需要重新加载。
ps aux|grep nginx 查看nginx进程