Nginx从入门到起飞

0 阅读4分钟

反向代理 负载均衡 动静分离(动态请求和静态请求)

代理

  • 正向代理

    如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

    例如:开VPN去访问国外的网站,就是正向代理。

  • 反向代理

    代理服务器根据客户端的请求,从其关系的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端的过程,客户端只会得知代理服务器的IP地址,而不知道在代理服务器后面的服务器集群的存在。

安装

官方网站:nginx.org/

Windows

双击 nginx.exe , 一闪而过

在浏览器中访问 localhost

Linux

  1. 配置Nginx yum存储库

    创建/etc/yum.repos.d/nginx.repo文件

    sudo vim /etc/yum.repos.d/nginx.repo
    

    增加如下内容

    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true[nginx-mainline]
    name=nginx mainline repo
    baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
    gpgcheck=1
    enabled=0
    gpgkey=https://nginx.org/keys/nginx_signing.key
    module_hotfixes=true
    
  2. 在线安装Nginx

    执行以下命令,安装Nginx

    sudo yum install nginx
    
  3. 启动Nginx

    执行以下命令启动Nginx

    sudo systemctl start nginx
    

    执行以下命令查看Nginx运行状态

    sudo systemctl status nginx
    

    执行以下命令设置开机自启

    sudo systemctl enable nginx
    
  4. 访问Nginx服务默认首页

    访问 Welcome to nginx! ,能访问到页面,则证明Nginx运行正常。

Docker

拉取镜像

docker pull nginx

启动Nginx

docker run  -d --name=nginx -p 80:80 -v nginx_conf:/etc/nginx -v nginx_html:/usr/share/nginx/html -v nginx_logs:/var/log/nginx nginx

地址: Welcome to nginx!

配置

  1. 配置文件相关

    • /etc/nginx/:主要的Nginx配置文件目录。
    • /etc/nginx/nginx.conf:Nginx的主配置文件,包含全局配置信息。
    • /etc/nginx/conf.d/:这个目录通常包含一些附加的配置文件,默认情况下主配置文件/etc/nginx/nginx.conf会引入该目录的所有文件。
  2. 日志相关

    • /var/log/nginx/:Nginx的日志文件目录,包括访问日志和错误日志。
    • /var/log/nginx/access.log:访问日志,记录所有进入服务器的请求。
    • /var/log/nginx/error.log:错误日志,记录服务器处理过程中的错误信息。

主配置文件

#全局块配置
user  nginx;    #设置用户和组
worker_processes  auto;  #进程数量
error_log  /var/log/nginx/error.log notice;  #日志存放地址
pid        /var/run/nginx.pid;  #进程ID


#事件块配置
# worker_processes * worker_connections / 2    #静态请求并发数量
# worker_processes * worker_connections / 4    #动态请求并发数量
events {
    worker_connections  1024;
}

#配置http服务器,利用它的反向代理功能提供负载均衡支持
http {
	#配置nginx支持哪些多媒体类型,可以在conf/mime.types查看支持哪些多媒体类型
    include       /etc/nginx/mime.types;
    #默认文件类型 流类型,可以理解为支持任意类型
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

	#访问日志
    access_log  /var/log/nginx/access.log  main;

	#大文件传输
    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

	#开启压缩
    #gzip  on;

    include /etc/nginx/conf.d/*.conf
}

server部分

server {
        listen       80;
        server_name  localhost;
        #默认的匹配斜杠/的请求,当访问路径中有斜杠/,会被该location匹配到并进行处理
        location / {
            #root   html;
            #index  index.html index.htm;
            proxy_pass http://serverlist;
            
        }

      
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
      
    }

反向代理

server {
    listen       9090;
    server_name  你的IP;
​
    location / {
        proxy_pass https://www.baidu.com/;
    }
}

负载均衡

默认是轮询的

worker_processes  1;
​
events {
    worker_connections  1024;
}
​
http {
    include       mime.types;
    default_type  application/octet-stream;
​
    sendfile        on;
   
    keepalive_timeout  65;
    
    upstream my{
       server localhost:8080;
       server localhost:8081;
    }
​
    server {
        listen       80;
        server_name  localhost;
​
        location /list {
            proxy_pass  http://my;
        }
​
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
      
    }
​
}

weight

所谓的负载均衡简单说就是将一台服务原来承受的压力由多台服务器来分配,可以在nginx中实现tomcat集群,通过weight来分配权重。

weight 代表权重,默认为1,权重越高被分配的客户端越多

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 例如:

# 反向代理配置
upstream server_list{
# 这个是tomcat的访问路径
server localhost:8080 weight=5;
server localhost:9999 weight=1;
}

ip_hash

绑定处理请求的服务器。第一次请求时,根据该客户端的IP算出一个HASH值,将请求分配到集群中的某一台服务器上。后面该客户端的所有请求,都将通过HASH算法,找到之前处理这台客户端请求的服务器,然后将请求交给它来处理。可以解决会话Session丢失的问题

upstream backserver { 
        ip_hash; 
        server 127.0.0.1:8080; 
        server 127.0.0.1:9090; 
}

不管刷新多少遍,始终访问的是同一台tomcat服务器

最少连接

将请求分配给连接数最少的服务器。Nginx会统计哪些服务器的连接数最少。

web请求会被转发到连接数最少的服务器上

upstream backserver { 
	least_conn;
	server 127.0.0.1:8080; 
	server 127.0.0.1:9090; 
}