nginx的基本使用,看这一篇就够了!

目录

一、什么是nginx?

二、nginx能干什么?

1、反向代理

2、动静分离 

3、负载均衡

三、常用命令

四、延申问题

1、nginx和nacos的负载均衡有什么区别?

2、nginx做负载均衡的时候,nginx挂掉了怎么办?如果nginx做集群,nginx集群的负载均衡器挂掉了又怎么办?


一、什么是nginx?

       nginx是一款高性能的HTTP和反向代理Web服务器,同时也支持IMAP/POP3/SMTP邮件服务。它由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发,并于2004年10月4日发布了首个公开版本0.1.0。Nginx采用类BSD许可证发布源代码,以其稳定性、丰富的功能集、简洁的配置和低系统资源消耗而著称。2011年6月1日,nginx 1.0.4版本发布。

       nginx作为一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行。其特点是占用内存少,并发能力强,实际上在同类型网页服务器中,Nginx的并发能力表现尤为出色。中国大陆使用Nginx的网站包括百度、京东、新浪、网易、腾讯和淘宝等。

       nginx以其处理高并发的强大能力而闻名,能够经受住高负载的考验,有报告表明它能支持高达5万个并发连接数。此外,Nginx支持热部署,启动简单,可以实现7*24不间断运行,几个月都不需要重新启动。

二、nginx能干什么?

1、反向代理

       提到反向代理时,我们往往会联想到正向代理。实际上,正向和反向的区分是基于客户端的视角来判断的。如果代理操作是由客户端发起的,那么这种代理被称为正向代理;而如果代理操作是由目标服务器端发起的,则称为反向代理。这个分类并不是指代理服务器一定要部署在客户端或目标服务器上,而是看代理动作是由哪一方来执行。正向代理通常用于解决客户端访问限制的问题,而反向代理则主要用于负载均衡、安全防护等目的。以下是nginx配置反向代理的配置:

user root;
worker_processes auto;
error_log /usr/local/nginx/logs/error.log;  #错误日志路径
pid /usr/local/nginx/logs/nginx.pid;

include /usr/share/nginx/modules/*.conf;


events {
    worker_connections  1024;
}


http {

    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  /usr/local/nginx/logs/access.log  main;  #访问日志路径,可以关掉

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
    client_max_body_size 20M;

        
    server {
         #如果根据 listen   server_name  没有匹配到的话,默认使用第一个server
         #可以在listen后面加添加default_server来设置匹配不成功的默认使用的server
        listen       8888;
        server_name  101.31.7.23;  #多个的话可以用空格分隔

       #以下配置是开启gzip压缩的,不需要开启的话,可以去掉,一般建议开启
        gzip on;  #是否开启gzip模块 on表示开启 off表示关闭
        gzip_buffers 4 16k;  #设置压缩所需要的缓冲区大小
        gzip_comp_level 6;  #压缩级别1-9,数字越大压缩的越好,也越占用CPU时间
        gzip_min_length 100k;  #设置允许压缩的最小字节
        gzip_http_version 1.1;  #设置压缩http协议的版本,默认是1.1
        gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;  #设置压缩的文件类型
        gzip_vary on;  #加上http头信息Vary: Accept-Encoding给后端代理服务器识别是否启用 gzip 压缩
        location /api {
            # proxy_pass 端口后面加路径,该路径就会替换location中的路径,有/也会替换
            #没加路径就只替换访问路径的ip和端口
            proxy_pass http://101.31.7.23:8180/;
        }
        
    }
        
}
 

2、动静分离 

      通常来说,动态资源指的是那些由后台生成或处理的资源,而静态资源则包括HTML、JavaScript、CSS和图片等文件。简单来说,动态资源可以理解为后端接口,而静态资源则是前端所需的各类文件。在使用前后端分离部署的项目中,Nginx的动静分离特性得到了充分利用,使得项目的性能和可维护性得到了显著提升。动静分离的配置如下:

server {
         #如果根据 listen   server_name  没有匹配到的话,默认使用第一个server
         #可以在listen后面加添加default_server来设置匹配不成功的默认使用的server
        listen       8888;
        server_name  101.31.7.23;  #多个的话可以用空格分隔
        location /api {
            # proxy_pass 端口后面加路径,该路径就会替换location中的路径,有/也会替换
            #没加路径就只替换访问路径的ip和端口
            proxy_pass http://101.31.7.23:8180/;
        }
        
        location / {
            root  /home/zcloud/applications/iomp-web; #前端部署目录
            index  index.html index.htm;
        }

        location /images/ {
            alias /home/zcloud/file/;   #静态文件存放目录
            autoindex    off;  #关闭自动索引,开启后用户可以访问目录下的文件,一般建议关闭
        }
    }
    

       这里细心的同学会发现我们在配置前端文件路径的时候使用的是root 指令,而配置图片的静态文件的路径的时候使用的是alias。

       那么,alias和root在使用上有什么区别呢?

      alias:将请求的URI替换为alias指定的路径。例如,如果请求为/images/logo.png,则nginx会查找/home/zcloud/file/logo.png。
     root :将请求的URI直接附加到root指定的路径后面。例如,如果请求为/images/logo.png,则nginx会查找/home/zcloud/file/images/logo.png。

需要注意的是:如果使用alias的时候location的路径是以/结尾的话,alias配置的路径也必须以/结尾。

3、负载均衡

       负载均衡,就是说如果一组计算机节点(或者一组进程)提供相同的(同质的)服务,那么对服务的请求就应该均匀的分摊到这些节点上。

nginx负载均衡的配置如下:

http {

    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  /usr/local/nginx/logs/access.log  main;  #访问日志路径,可以关掉
    
    #轮询的方式
    upstream server_group {
         server 101.31.7.24:8080; #node1
         server 101.31.7.25:8081; #node2
         server 101.31.7.26:8082; #node3      
   }
   
    #加权轮询的方式
  #  upstream server_group {
  #       server 101.31.7.24:8080 weight=3; #node1
  #       server 101.31.7.25:8081 weight=5; #node2
  #       server 101.31.7.26:8082 weight=2; #node3      
  # }
  
    
    #ip_hash的方式,基于客户端IP的分配方式  
  #  upstream server_group {
  #       ip_hash;
  #       server 101.31.7.24:8080; #node1
  #       server 101.31.7.25:8081; #node2
  #       server 101.31.7.26:8082; #node3      
  # }
   #最少连接的方式,把请求分发给连接请求较少的那台服务器
  #  upstream server_group {
  #       least_conn;
  #       server 101.31.7.24:8080; #node1
  #       server 101.31.7.25:8081; #node1
  #       server 101.31.7.26:8082; #node1      
  # }
        
    server {
         #如果根据 listen   server_name  没有匹配到的话,默认使用第一个server
         #可以在listen后面加添加default_server来设置匹配不成功的默认使用的server
        listen       8888;
        server_name  101.31.7.23;  #多个的话可以用空格分隔
        location /api {
            # proxy_pass 端口后面加路径,该路径就会替换location中的路径,有/也会替换
            #没加路径就只替换访问路径的ip和端口
            proxy_pass http://server_group/;
        }
    }
        

三、常用命令

#检查配置文件是否正确
./nginx -t  

#每次修改完配置文件先检查配置文件是否正确

#配置文件正确的话,就可以使用该命令重新加载配置文件,无需重启nginx
./nginx -s reload    
#启动nginx
./nginx
# 快速停止nginx
./nginx -s stop
# 完整有序的停止nginx,这个命令会等待所有请求结束后再关闭nginx
./nginx -s quit

以上命令均需要进入到nginx的安装目录下的sbin目录下执行,nginx的安装目录一般是/usr/local/nginx。如果不在默认安装目录下面可以使用命令find /  -name  nginx.conf去找nginx的配置文件 nginx.conf即可。

四、延申问题

1、nginx和nacos的负载均衡有什么区别?
2、nginx做负载均衡的时候,nginx挂掉了怎么办?如果nginx做集群,nginx集群的负载均衡器挂掉了又怎么办?

欢迎大家在评论区就这个问题分享各自的见解和观点,我会综合大家的意见,在接下来的两篇博文中详细探讨这个话题。期待大家的积极参与和精彩评论!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值