企业运维实战LAMP架构--nginx的安装以及配置(并发优化、负载均衡、平滑升级、限流、配置管理、重定向、防盗链)

本文详细介绍了如何在Linux环境中安装和配置Nginx,包括源码编译、依赖安装、并发优化、反向代理负载均衡、平滑升级、限流配置、日志管理、防盗链策略等实战操作。同时,还涵盖了如何通过修改配置提高服务器的安全性和性能。
摘要由CSDN通过智能技术生成

企业运维实战LAMP架构–nginx的安装以及配置

安装nginx

tar zxf nginx-1.20.1.tar.gz
cd nginx-1.20.1 解压并进入目录

源码编译三部曲-1.configure

./configure --help
在这里插入图片描述
./configure --prefix=/usr/local/nginx (编译路径)

通过几次尝试随后会提示缺少以下组件,安装它们
yum install gcc -y
yum install pcre-devel -y
yum install zlib-devel -y

安装常用的一些功能
yum install openssl-devel -y
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

源码编译三部曲-2. make

make

源码编译三部曲-3. make install

make install
初始安装完毕

cd /usr/local/nginx/sbin
./nginx 开启nginx服务

测试:
curl 172.25.76.1
在这里插入图片描述

netstat -antlupe 查看端口,默认为80在这里插入图片描述./nginx -s stop 关闭服务
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ 创建软链接(方便全剧开启nginx)
测试:
curl -I 172.25.76.1
在这里插入图片描述

修改相关配置可降低被攻击的机会

1.关闭c语言编译debug

nginx -s stop
vim ~/nginx-1.20.1/auto/cc/gcc
在这里插入图片描述注释掉

cd nginx-1.20.1
make clean
在这里插入图片描述

2.修改相关配置使其不显示版本

vim ~/nginx-1.20.1/src/core/nginx.h
将NGINX_VERSION删掉
在这里插入图片描述

nginx 打开nginx
du -h /usr/local/nginx/sbin/nginx 查看大小
在这里插入图片描述
小了很多 也提高了安全性

nginx开机自动启动设置

vim /usr/lib/systemd/system/nginx.service

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

systemctl daemon-reload 刷新服务列表
systemctl enable --now nginx 开机启动nginx

**

nginx的配置管理

**

1.nginx并发优化

Linux下高并发socket最大连接数所受的各种限制

ulimit -a 查看修改用户进程可打开文件书限制
在这里插入图片描述

修改用户进程可打开文件数限制
vim /etc/security/limits.conf
vim /usr/local/nginx/conf/nginx.conf

worker_processes  2;  工作进程数 不超过cpu个数

events {
    worker_connections  65535; 单个工作进程并发连接数
}

查看最大打开文件数限制
sysctl -a | grep file
在这里插入图片描述

2.nginx反向代理 负载均衡

实验环境需要:三台虚拟机
server1 nginx反向代理加负载均衡主机
server2 nginx服务
server3 httpd服务

server1:
vim /usr/local/nginx/conf/nginx.conf

21upstream westos {
22    server 172.25.76.2:80 weight=2; ##修改权重,172.25.76.2的权重为2,有三分之二的几率被访问,172.25.21.3默认为1,有三分之一的几率被访问
23    server 172.25.76.3:80;
24}

151server {
152         listen 80;
153         server_name www.westos.org;
160 
161         location / {
162                proxy_pass http://westos;
163       }

nginx -t 检测语法
nginx -s reload 刷新nginx服务
在这里插入图片描述server2:
安装nginx
cd /usr/local/nginx/html/
echo server3 > index.html
nginx #开启服务

server3:
安装apache服务,编写默认发布文件、开启服务
yum install httpd -y
cd /var/www/html/
echo server3 > index.html
systemctl enable --now httpd.service

主机:
vim /etc/hosts 域名解析
在这里插入图片描述测试:

[root@foundation76 Desktop]# curl www.westos.org
server2
[root@foundation76 Desktop]# curl www.westos.org
server3
[root@foundation76 Desktop]# curl www.westos.org
server3
[root@foundation76 Desktop]# curl www.westos.org
server2
[root@foundation76 Desktop]# curl www.westos.org
server2
[root@foundation76 Desktop]# curl www.westos.org
server2
[root@foundation76 Desktop]# curl www.westos.org
server3

配置成功

3. nginx平滑升级

准备新版本1.21.1的源代码编译包

nginx-1.21.1.tar.gz

进入解压后的目录,修改相关配置
vim auto/cc/gcc

在这里插入图片描述把debug注释掉

配置
./configure --with-http_ssl_module --with-http_stub_status_module --prefix=/usr/local/nginx

编译
make

不要make install

保存备份老版本nginx
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx-old

将生成的nginx去覆盖安装目录下的老的nginx

\cp -f objs/nginx /usr/local/nginx/sbin/nginx

获取当前nginx主进程pid
ps ax|grep nginx
在这里插入图片描述
升级新程序

kill -USR2 3124 
#SIGUSR2 用户自定义信号 默认处理:进程终止

查看新程序
ps ax|grep nginx
在这里插入图片描述
关闭原worker进程但保留主进程,目的是有机会可以回退

kill -WINCH 3124

测试:curl -I 172.25.76.1
在这里插入图片描述
显示版本已经到1.21.1

版本回退:

使用刚刚提前保存好老版本的nginx-old
在这里插入图片描述
进入 /usr/local/nginx/sbin/

还原nginx程序: cp -f nginx-old nginx
唤醒原进程: kill -HUP 老版本id
回收新版本的master进程:kill -WINCH 3150
关闭新版本主进程:kill -QUIT 3150

测试:curl -I 172.25.76.1’
在这里插入图片描述

4. nginx限流

vim /usr/local/nginx/conf/nginx.conf

 23         limit_conn_zone $binary_remote_addr zone=addr:10m; #
 limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; # 限制访问频次,这里限制每秒1次
 41     server {
 42         location /download {
 43                 limit_conn addr 1; #限制并发次数
 44 				limit_rate 50k;#限制带宽
 					limit_req zone=one; 
                	limit_req zone=one burst=5;
                	limit_req zone=one burst=5 nodelay;

 45                 }
 46 
 47         }

5. nginx配置管理

为了下载方便
自动索引
vim /usr/local/nginx/conf/nginx.conf

server {
        location /download {
                autoindex on; #自动索引
                }

        }

nginx -t
nginx -s reload
测试: http://172.25.76.1/download
在这里插入图片描述

6. nginx expire缓存配置

当用户再次访问网站时,缓存可以加速用户访问。

location ~ .*\.(gif|jpg|png)$ {
    expires 365d;
    root /www;
}

测试:
在这里插入图片描述
返回码200,表示成功, expires显示到明年九月六日到期

7. 日志轮询

编写脚本:
nginx_log.sh

#!/bin/bash
cd /usr/local/nginx/logs && mv access.log access_$(date +%F -d -1day  ####表示当前日期减1天).log   
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid ####查看nginx进程号`

在这里插入图片描述禁用不必要日志记录

location ~ .*\.(js|jpg|jpeg|png|css|bmp|gif)$ {
	access_log off;
}

##中文乱码
charset utf-8;
在这里插入图片描述修改完后记得删掉浏览器缓存重新打开网页

##限制IP访问

location / {
	deny 172.25.0.10;
	allow 172.25.0.0/24;
	deny all;
}

if ($remote_addr = 172.25.0.254) {
	return 403;
}

8.重定向

作用:防止域名恶意解析到服务器IP

server { 
listen 80; 
server_name   localhost; 
return 500; 
} 

即刷新服务后再访问localhost时,会显示500错误
在这里插入图片描述

也可以重定向到指定网站

server { 
listen 80; 
server_name   localhost; 
rewrite ^(.*) http://www.westos.org permanent; 
} 

在这里插入图片描述
##80重定向到443

vim /usr/local/nginx/conf/nginx.conf
在这里插入图片描述
生成https证书
在这里插入图片描述
mv cert.pem /usr/local/nginx/conf/
nginx -t
nginx -s reload
在这里插入图片描述在这里插入图片描述

server {
        listen 80;
        server_name www.westos.org;

        location / {
#               proxy_pass http://westos; # 反向代理器proxy_pass
                rewrite ^/(.*)$ https://www.westos.org/$1 permanent; #将所有访问
转到https端口

刷新后
在这里插入图片描述
##虚拟主机重定向
www.westos.org/bbs 重定向bbs.westos.org:
在这里插入图片描述

编辑bbs的默认发布文件
mkdir /usr/local/nginx/html/bbs
vim /usr/local/nginx/html/bbs/index.html
bbs page
在这里插入图片描述
测试:
curl -I www.westos.org/bbs
在这里插入图片描述

bbs.westos.org 重定向www.westos.org/bbs:
在这里插入图片描述

if ($host = "bbs.westos.org"){
	rewrite ^/(.*)$ http://www.westos.org/bbs/$1 permanent; # bbs.westos.org
----> www.westos.org/bbs
}

刷新服务后
在主机:
vim /etc/hosts
172.25.76.1 www.westos.org bbs.westos.org
在这里插入图片描述

9.防盗链

在server2的发布目录创建一个盗链文件
在这里插入图片描述

vim /usr/local/nginx/conf/nginx.conf

location ~ \.(jpg|png)$ {
                valid_referers none blocked www.westos.org;
                if ($invalid_referer) {
                        return 403;
                        #rewrite ^/ http://www.westos.org/daolian.jpg;
                }
        }

http状态码
1开头   保留
2开头   成功访问
3开头   重定向
4开头   请求(客户)错误
5开头   服务器错误

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lll_cf

喜欢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值