Nginx使用指南


 

nginx简介

nginx是一个高性能、轻量级的服务器,可同时作为web服务器、反向代理服务器。正向代理是代替客户端(用户)访问服务器,反向代理是代替服务器接收、处理请求。
 

nginx的特点

  • 稳定性高
  • 系统资源占用少
  • 并发能力强

一般用nginx反向代理tomcat(负载均衡)、代理静态资源。

 

windows下使用nginx

启动、关闭nginx的2种方式

1、双击启动,Ctrl+Shift+Esc任务管理器结束nginx的2个进程来关闭nginx,也可以命令行结束

#查看nginx进程的pid
tasklist | findstr nginx
#结束nginx的2个进程
taskkill /f /pid pid1
taskkill /f /pid pid2

如果修改了nginx的配置,需要重启nginx使之生效
 

2、命令行cd到nginx主目录

#启动
start nginx

#停止
nginx -s stop
#退出,退出之前会强制停止nginx
nginx -s quit  

#重新加载配置
nginx -s reload

如果操作过程中要重新加载配置,第二种方便些。

 

linux下使用nginx

安装

.tar.gz中是nginx的源码,需要自己编译安装,先放到/usr/local下

#安装依赖
yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel
yum -y install gcc automake autoconf libtool make


#解压
tar -xzvf nginx-1.16.1.tar.gz
rm nginx-1.16.1.tar.gz


#进入解压目录
cd nginx-1.16.1
#指定安装目录
mkdir /usr/local/nginx
./configure --prefix=/usr/local/nginx


#编译
make
#安装
make install


#删除解压目录
cd ..
rm -r nginx-1.16.1


#开启80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
fire-wall --reload

 

常用命令

都是调用sbin下的nginx,先切换到nginx/sbin下

./nginx  #启动nginx

./nginx -s stop  #停止
./nginx -s quit  #停止并退出

./nginx -s reload  #重新加载配置

./nginx -v  #查看nginx版本

 

设置开机启动(可选)

vim /etc/rc.d/rc.local

末尾加上 /usr/local/nginx/sbin/nginx

 

nginx常用配置(反向代理、代理静态资源)

#gzip  on;

#指定tomcat集群、要使用的负载均衡算法
upstream servers{
    server 192.168.1.1:8080;
    server 192.168.1.2:8080;
    server 192.168.1.3:8080;
}

server {
    listen       80;
    server_name  localhost;

    #字符集使用utf-8
    charset utf-8;

    #access_log  logs/host.access.log  main;

    location / {
        root   html;
        index  index.html index.htm;
        #反向代理tomcat
        proxy_pass http://servers;
    }

   #代理静态资源
    location ~* \.(html|css|js|gif|jpg|png|mp4)$ {
       #设置静态资源根目录,相对于nginx主目录,在主目录下新建文件夹static,把静态资源放进去即可
       root static;
       #设置浏览器缓存的静态资源的有效期,到期后再次访问时会重新从nginx加载。秒s,分m,时h,天d
       expires 7d;  
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

 

nginx的负载均衡算法

1、轮询(默认)
轮询适合服务器性能差不多的情况,默认使用的就是轮询,不需要设置什么。
将列表中的节点排成一圈,从前往后,找空闲的服务器来处理请求。
 

2、加权轮询
设置权重,权重大的轮到的机会更大,适合服务器性能有明显差别的情况,性能好的权重设置大些。

upstream  servers{
    server 192.168.1.1:8080 weight=1;
    server 192.168.1.2:8080 weight=3;
    server 192.168.1.3:8080 weight=2;
}

 

3、ip_hash

根据用户ip的hash值来转发请求,同一用户(ip)的请求都会被转发给同一个服务器处理,可解决分布式session问题

upstream  servers{
    ip_hash;
    server 192.168.1.1:8080;
    server 192.168.1.2:8080;
    server 192.168.1.3:8080;
}

 

4、url_hash(第三方)

根据请求的url来转发,将url相同的请求转发给同一服务器处理。一直处理某个url,该服务器上会有这个url请求的缓存,可减少处理时间

upstream  servers{
    hash $request_uri;
    server 192.168.1.1:8080;
    server 192.168.1.2:8080;
    server 192.168.1.3:8080;
}

 

5、fair(第三方)

根据服务器响应时间来分发请求,响应时间短的说明负载小、性能充足,分发给它的请求多些,fair 公平。

upstream  servers{
    fair;
    server 192.168.1.1:8080;
    server 192.168.1.2:8080;
    server 192.168.1.3:8080;
}

 
ip_hash、url_hash都是使用特定服务器节点来处理特定请求,如果该节点故障,nginx会剔除不可用的节点,将特定请求转发给其它节点处理,url_hash影响不大,但ip_hash会丢失之前的session数据。

url_hash、fair都依赖第三方模块,需要安装相应的模块。

 

只使用单个nginx容易发生单点故障,一般要用 LVS+keepalive+nginx 实现nginx的高可用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章