这两天住酒店,不用上班,天天睡觉也不是个事呀,学习学习吧
先学点简单的了,我就选了这个,除了简单的外,我觉得一个成熟的系统构架里,这东西必须有,而且很重要。
到底干啥用的?
加黑的重点场景,我接触的系统里,还真有没做的,北边的用户访问.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、文档结构
... #全局块
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时长),内容还很多