Nginx基础学习

这两天住酒店,不用上班,天天睡觉也不是个事呀,学习学习吧

先学点简单的了,我就选了这个,除了简单的外,我觉得一个成熟的系统构架里,这东西必须有,而且很重要。

到底干啥用的?

代理服务器
IP负载、静态负载
• 动静分离
限流、健康监控

加黑的重点场景,我接触的系统里,还真有没做的,北边的用户访问.1,南边的用户.2,剩下的用户访问.3,,这操作我也是服了

以我目前对架构的认知,Nginx+keepalived(负载均衡和双活就有了)+Web服务集群(应用服务就有了)+数据库服务器的读写分离、主从切换,一个稍微还算靠谱的系统就有了。

开始正题

一、安装

Windows下的安装就不说,没技术含量。

Linux下,以Centos为例

1、安装依赖

yum install gcc-c++
yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum install -y openssl openssl-devel

2、下载程序

​wget http://nginx.org/download/nginx-1.20.2.tar.gz 

3、解压

tar zxvf nginx-1.20.2.tar.gz  #解压
./configure --prefix=/opt/nginx  #进入解压后的目录,配置编译安装后的位置
make #编译
make install #生成

4、启动

进入opt/nginx/sbin/

./nginx

就这么简单。检查是否成功,可以在浏览器上输入本机地址,看到这个画面,就算是成功启动了

二、负载均衡配置

 1、文档结构

1.*_temp 目录:共有 5 temp 结尾的目录,用于存放 Nginx 运行时产生的临时文件。
2.conf 目录:存放配置文件的目录,包含主配置文件 nginx.conf ,是我们经常修改的配置文件。
3.html 目录:默认存放了 Nginx 的错误页面和欢迎页面等。
4.logs 目录:默认存放了访问日志和错误日志文件。
5.sbin 目录:默认存放了 Nginx 的二进制命令,常用于 Nginx 服务的启动、停止等管理工作。
2、配置,conf/nginx.confjuti
... #全局块
events { #events块
...
}
http #http块 {
... #http全局块
gzip\upstream\fastcgi
    server #server块
        { 
            location [PATTERN] #location块 
                {......
                }
            location [PATTERN] 
                {
                ...
                }
         }
    server
        {
        }
}
具体配置
http {
		include       mime.types;
		#include luawaf.conf;
		include proxy.conf;
        default_type  application/octet-stream;

        server_names_hash_bucket_size 512;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 50m;

        sendfile   on;
        tcp_nopush on;

        keepalive_timeout 60;

        tcp_nodelay on;

        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 256k;
		fastcgi_intercept_errors on;

        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 2;
        gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
        gzip_vary on;
        gzip_proxied   expired no-cache no-store private auth;
        gzip_disable   "MSIE [1-6]\.";

        limit_conn_zone $binary_remote_addr zone=perip:10m;
		limit_conn_zone $server_name zone=perserver:10m;

        server_tokens off;
        access_log off;
	upstream localhost {
    	server *.*.*.1 ;
        server *.*.*.2 ;
        server *.*.*.3 ;
        server *.*.*.4 ;
    }
    server {
        listen       80;
        server_name  localhost;
        location / {
            proxy_pass http://localhost ;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

最后几行是重点,1 upsream {}是单独的块,与server平级

2 80 是监听端口,3server_name写localhost,3 proxy_pass 内的localhost相当于被替换成 upsream下的IP

注意,记得关服务器防火墙,或者开放80端口的访问

三、常用命令

./nginx  #开启
./nginx -s stop  # 关闭服务,粗暴的关闭
./nginx -s quit  #关闭服务,优雅的退出
./nginx -s reload # 重新加载修改后的配置文件,但有些配置项的修改,还是建议,先关闭,在修改,最后开启

四、动静分离

先不写了,我也没搞过,目前的认知水平,互联网下找运营商搞CDN靠谱(也不知道一码通搞了没,所有资源都要从电信的机房走,压力当然大了,出行不靠绿码,用冰墩墩的绿色贴纸,是防疫部门蹭热度,还是对一码通不信任 ?)

内网环境下,就我们这点用户量,动静分离了感觉意义不大,另外有些网页同一JS资源文件,多次请求是否合理(是因为网页嵌套造成的吗?)咱也不敢问呀,但同一JS资源文件多次请求,而且请求路径也不一样,这肯定不合理,写代码的不是一个项目组的吧。

五、其他

还有很多其他配置,开启压缩,gzip on;keepalive_timeout (http时长),内容还很多

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值