一、引言

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进程