配色: 字号:
java架构师-技术专家-练习手册-第06周集群阶段nginx
2023-09-21 | 阅:  转:  |  分享 
  
LVS+Nignx实现高可用集群使用集群的优点提高系统性能提高系统可用性可扩展性高使用集群的注意点:1)用户会话2)定时任务3)内网互通正向
代理:客户 <->客户端 <->正向代理 <->目标服务器反向代理:用户请求目标服务器,由代理服务器决定访问哪个IPNginx安装
与运行下载https://nginx.org/en/download.html安装依赖环境安装gcc环境yum install
gcc-c++安装PCRE库,用于解析正则表达式 yum install -y pcre-develzlib压缩喝解压缩依赖
yum install -y zlib zlib-develSSL安全的加密的套接字协议层,用于HTTP安全传输,也就是ht
tpsyum install -y openssl openssl-devel总结一句:yum -y install gcc zl
ib zlib-devel pcre-devel openssl openssl-devel解压解压后得到的是源码,源码需要编译后
才能安装。tar -zxvf nginx-1.22.1.tar.gz编译编译之前先创建nginx临时目录,如果不创建,在启动n
ginx的过程中会报错。mkdir /var/temp/nginx -p 在nginx目录,进行配置,为了创建makefile
文件./configure \--prefix=/usr/local/nginx \--pid-path=/var/run/ngi
nx/nginx.pid \--lock-path=/var/lock/nginx.lock \--error-log-path=
/var/log/nginx/error.log \--http-log-path=/var/log/nginx/access.l
og \--with-http_gzip_static_module \--http-client-body-temp-path=
/var/temp/nginx/client \--http-proxy-temp-path=/var/temp/nginx/pr
oxy \--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \--http-uw
sgi-temp-path=/var/temp/nginx/uwsgi \--http-scgi-temp-path=/var/t
emp/nginx/scgi按回车:Make编译make 安装make install搜索nginx的安装目录whereis
nginx进入sbin目录 启动nginx启动命令: ./nginx停止(暴力关闭):./nginx -s stop重新加载
:./nginx -s reload退出(友好): ./nginx -s quit重启Nginx: ./nginx -s r
eopen测试配置文件是否正确: ./nginx -t查看当前nginx的版本号:./nginx -v 或者 ./nginx -V
切换nginx核心配置:./nginx -c filePath 查看进程: ps -ef|grep nginx 打开浏览器,访问
虚拟机所处内网ip即可打开nginx默认页面,显示即表示安装成功。例如:http://192.168.73.128:80注意:ng
inx默认端口:80解决重启虚拟机,启动nignx报错(修改?nginx.conf?文件)报错:?nginx: [error] o
pen() "/var/run/nginx/nginx.pid" failed (2: No such file or direc
tory)?解决方案一:1、进入?cd /usr/local/nginx/conf/?目录,编辑配置文件nginx.conf?;2
、在配置文件中有个注释的地方:?#pid ?logs/nginx.pid;3、修改为:pid ? ?/usr/local/ngi
nx/logs/nginx.pid;4、在?/usr/local/nginx?目录下创建?logs 目录:mkdir?/usr/l
ocal/nginx/logs解决方案二:创建路径: mkdir /var/run/nginx在 sbin路径下,重新指定一下co
nf文件的路径:./nginx -c /usr/local/nginx/conf/nginx.conf重新启动nginx即可:
./nginx -s reload Nginx开机启动方法:/usr/lib/systemd/system1、进入:cd /u
sr/lib/systemd/system2、创建文件:touch nginx.service3、编辑文件: vi nginx.s
ervice#服务的说明[Unit] #描述服务Description=nginx#描述服务类别After=network.ta
rget#服务运行参数的设置[Service]#是后台运行的形式Type=forking#为服务的具体运行命令ExecStart=
/usr/local/nginx/sbin/nginx#重启命令ExecReload=/usr/local/nginx/sbin/
nginx -s reload#停止命令ExecStop=/usr/local/nginx/sbin/nginx -s quit#
表示给服务分配独立的临时空间PrivateTmp=true#运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3[In
stall]WantedBy=multi-user.target设置开机启动:systemctl enable nginx.ser
vice设置取消开机启动:systemctl disable nginx.service 服务命令systemctl start
nginx.service #开启systemctl stop nginx.service #关闭systemctl
restart nginx.service #重新启动服务systemctl reload nginx.service #
重新加载配置systemctl status nginx.service #查看当前nginx服务状态systemctl lis
t-units --type=service #查看所有已启动的服务Nginx 的进程模型Nginx.conf配置结构查看ng
inx.conf 文件内容:#全局配置----------------------------------------------
---------------#指定nginx运行的用户及用户组,默认为nobody#user nobody nobody;#开
启线程数,最大值可设逻辑CPU核数#worker_processes 1; #定位全局错误日志文件,级别以notice显示,还有
debug,info,warn,error,crit模式,debug输出最多,crir输出最少,根据实际环境而定#error_lo
g logs/error.log;#error_log logs/error.log notice;#error_log
logs/error.log info;#指定进程id的存储文件位置#pid logs/nginx.pid;pid
? ?/usr/local/nginx/logs/nginx.pid;#指定一个nginx进程打开的最多文件描述符数目,受系统进
程的最大打开文件数量限制#worker_rlimit_nofile 65535#envents 配置---------------
-------------------------------------------events { #设置工作模式为epoll
,除此之外还有select,poll,kqueue,rtsig和/dev/poll模式 use epoll; #定义每个进程的最大
连接数,受系统进程的最大打开文件数量限制 worker_connections 1024;}#http 配置----------
---------------------------------------------------http { #主模块指令,
实现对配置文件所包含的文件的设定,可以减少主配置文件的复杂度 include mime.types; #核心模块指令
,默认设置为二进制流,也就是当文件类型未定义时使用这种方式 default_type application/octet-str
eam; #下面代码为日志格式的设定,main为日志格式的名称,可自行设置,后面引用log_format main ''$re
mote_addr - $remote_user [$time_local] "$request" '' ''$status $bod
y_bytes_sent "$http_referer" '' ''"$http_user_agent" "$http_x_forwa
rded_for"'';#引用日志main格式access_log logs/access.log main; #设置允许客户端
请求的最大的单个文件字节数 client_max_body_size 20M; #指定来自客户端请求头的headebuffer大小
client_header_buffer_size 32k; #指定连接请求试图写入缓存文件的目录路径 client_body
_temp_path /dev/shm/client_body_temp; #指定客户端请求中较大的消息头的缓存最大数量和大小,目
前设置为4个32KB large client_header_buffers 4 32k; #开启高效文件传输模式 sendfil
e on; #开启防止网络阻塞 tcp_nopush on; #开启防止网络阻塞 tcp_nodelay
on; #设置客户端连接保存活动的超时时间 #keepalive_timeout 0; # 无限时间 keepalive_t
imeout 65; #设置客户端请求读取header超时时间 client_header_timeout 10; #设置客户端
请求body读取超时时间 client_body_timeout 10; #HttpGZip模块配置 #开启gzip压缩 gzip
on; #设置允许压缩的页面最小字节数 gzip_min_length 1k; #申请4个单位为16K的内存作为压缩结果流缓存
gzip_buffers 4 16k; #设置识别http协议的版本,默认为1.1 gzip_http_version 1.1;
#指定gzip压缩比,1-9数字越小,压缩比越小,速度越快 gzip_comp_level 2; #指定压缩的类型 gzip_t
ypes text/plain application/x-javascript text/css application/xml
; #让前端的缓存服务器进过gzip压缩的页面 gzip_vary on; # server配置 server { #单连接请
求上限次数 keepalive_requests 120; #监听端口 listen 88; #监听地址,可以是ip
,最好是域名 server_name 111.222.333.123; #server_name www.123.com; #
设置访问的语言编码 charset utf-8; #设置虚拟主机访问日志的存放路径及日志的格式为main access_log
/www/wwwlogs/111.222.333.123.log main; #响应日志 error_log /www/wwwl
ogs/111.222.333.123.log main; #错误日志 #PHP-INFO-START PHP引用配置,可以注
释或修改 include enable-php-74.conf; #PHP-INFO-END #REWRITE-START UR
L重写规则引用 include /www/server/panel/vhost/rewrite/111.222.333.123.c
onf; #REWRITE-END #设置主机基本信息 #请求的url过滤,正则匹配,~为区分大小写,~为不区分大小写。 lo
cation ~^.+$ { #根目录 root html; #设置默认页 index index.html index
.htm; #拒绝的ip,黑名单 deny 127.0.0.1; #允许的ip,白名单 allow 172.18.5.54;
} #禁止访问的文件或目录 location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|
\.project|LICENSE|README.md) { return 404; } #SSL证书验证目录相关设置 loca
tion ~ \.well-known{ allow all; } #图片资源配置 location ~ .\.(gif|jpg
|jpeg|png|bmp|swf)$ { expires 30d; error_log /dev/null; acce
ss_log off; } #网站js与css资源配置 location ~ .\.(js|css)?$ { expires
12h; error_log /dev/null; access_log off; } #访问异常页面配置 erro
r_page 404 /404.html; error_page 500 502 503 504
/50x.html; location = /50x.html {root html;}} }手动日志切割:在/usr/loc
al/nginx/sbin目录下,创建cut_my_log.sh 文件: cd /usr/local/nginx/sbin vi
cut_my_log.sh#!/bin/bashLOG_PATH="/var/log/nginx"RECORD_TIME=$(da
te -d "yesterday" +%Y-%m-%d)PID=/usr/local/nginx/logs/nginx.pidmv
${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.logmv $
{LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log#向Nginx主
进程发送信号,用于重新打开日志文件kill -USR1 `cat $PID`给cut_my_log.sh文件赋权限:chmod +
x cut_my_log.sh运行cut_my_log.sh文件:./cut_my_log.sh定时任务:日志切割安装定时任务:y
um install crontabscrontab -e每天凌晨00:00定时执行这个脚本00 00 /usr/lo
cal/nginx/sbin/cut_my_log.sh 重启服务: 常用定时任务命令:service crond start
//启动服务service crond stop //关闭服务service crond restart //重启服务servic
e crond reload//重新载入配置crontab -e //编辑任务crontab -l //查看任务列表使用Nginx
为静态资源提供服务以RightWeb项目为例:在目录:/usr/local/nginx/conf 下编辑younao.conf 文
件cd /usr/local/nginx/confvi younao.confserver { listen 90; server
_name localhost; location / { root /usr/local/software/younao/Ri
ghtWeb; index index.html; } }将younao.conf 文件添加到 nginx.conf中:inclu
de younao.conf;重启nagix服务:浏览器请求ip+端口:http://192.168.73.128:90/使用Gz
ip压缩提高请求效率vi /usr/local/nginx/conf/nginx.confLocation的匹配规则精准匹配:正则
表达式:以某个字符路径开头请求DNS域名解析可以使用SwitchHosts 模拟:Nginx解决跨域问题:CORS跨域资源共享跨域
支持:#允许跨域请求的域,代表所有add_header ''Access-Control-Allow-Origin'' ;#允许带上cookie请求add_header ''Access-Control-Allow-Credentials'' ''true'';#允许请求的方法,比如 GET/POST/PUT/DELETEadd_header ''Access-Control-AlLow-Methods'' ;#允许请求的headeradd_header ''Access-Control-AlLow-Headers'' ;Nginx防盗链配置支持#对源站点验证valid_referers .younao.com;#非法引入会进入下方断if ($invalid_referer) { return 404;}Nginx的模块化体系Nginx负载均衡使用Jmeter测试单节点与集群的并发异常率下载https://jmeter.apache.org/download_jmeter.cgi环境变量配置运行0Nginx搭建集群负载均衡-策略简单轮询:默认的策略。是均匀分发请求的负载均衡策略。加权轮询:在轮询算法基础上增加了权重的负载均衡策略。
献花(0)
+1
(本文系樱花梦_张艺...首藏)