【狂神说笔记】 Nginx入门

1、简介

1.1、引入

简单的web项目中只需要一个tomcat部署在服务器上即可,但是当并发量增多,一台服务器满足不了需求了。

这个时候横向扩展,增加服务器,一个项目启动在不同的服务器上,而用户要访问这些服务器,如果直接访问session等的问题就会乱套,所以我们迫切需要一个代理服务器。

这个代理服务器可以帮助我们接受用户请求,然后按照用户请求规则转发到不同的服务器节点上,这个过程用户是无感知的。我们还希望它可以按照服务器的性能提供不同的权重选中,即负载均衡,所以我们选中了Nginx。

1.2、Nginx介绍

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日

其特点展用内存少,并发能力强,官方测试数据能够支持50000个并发连接数的响应。

国内使用它的有很多,例如百度,新浪,京东,网易,淘宝等

2、Nginx作用

2.1、反向代理

首先什么是正向代理

例如VPN,安装在客户端,接受服务器的数据转发给客户端

而反向代理就是代理服务器端的,例如百度其实有很多服务器的,有时候访问出现卡断会自动切换服务器

2.2、负载均衡

  • Nginx提供的负载均衡策略有两种:内置策略和扩展策略。内置策略为轮询,加权轮询,iphash。扩展策略即天马行空

轮询:请求依次挨个服务器发送

加权轮询:性能更强的服务器会接受更多的请求

iphash:对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端的ip发送到同一台服务器处理,解决session不共享问题(这种方式也有问题,一般用Redis实现session共享)

动静分离:不需要后台处理的静态文件和动态资源按照一定规则拆分,根据静态资源的特点将其进行缓存操作。提高资源响应的速度。

3、Nginx安装部署

这里以linux为例:

1、添加yum源
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

2、安装Nginx
yum install -y nginx
(nginx安装位置为/etc/nginx)

3、启动Nginx并设置开机自动运行
systemctl start nginx.service
systemctl enable nginx.service

4、Nginx参数配置和命令

4.1、命令

#启动nginx
cd nginx安装目录
./nginx
# 停止
nginx -s stop
# 安全退出
nginx -s quit
# 修改配置时的重启命令
service nginx reload 或者
nginx -s reload
# 查看nginx进程
ps aux | grep nginx

如果nginx访问不了,要排除防火墙的问题,如果是阿里云服务器这种还要排除安全组的问题

4.2、参数配置

这里拿某项目的配置文件举例

#全局配置
user  root;   #使用用户
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;  #并发数
}

#http配置
http {
    #静态资源文件配置
    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;

    #代理配置
    server {
       listen 80;
       server_name  XXX.XXX.com;
       rewrite ^(.*)$  https://$host$1 permanent;
    }

    upstream xx {
       //负载均衡配置
    }
}

5、Nginx实战

这里简单记录一下狂神老师的搭建记录:

首先前提是有两个服务器,然后通过nginx实现反向代理

http { 
	#http 配置(http默认端口80; https默认端口443;)

    upstream kuangstudy { #反向代理地址:http://tangguo
    	# 负载均衡配置
    	
        #服务器   服务器ip:端口   权重(1,2,3...)
        server 127.0.0.1:8080 weight=1;
        server 127.0.0.1:8081 weight=1;
    }

    server {
        listen		80; #端口配置
        server_name	localhost;
        
        location / { #根路径 访问
            root html;
            index index.html index.htm;
            proxy_pass http://kuangstudy; #反向代理
        }
        location /admin { #根路径下的/admin 访问
        }
    }
}

posted @ 2022-06-28 11:28  吴承勇  阅读(246)  评论(0编辑  收藏  举报