Operation
2023-07-17 11:07:09 0 举报
AI智能生成
liunx
作者其他创作
大纲/内容
day01
环境
yum -y install vim #安装vim编辑器
yum list | grep bash #查询名字和bash有关的软件包
yum -y install bash-completion #安装支持tab键的软件包,装好之后,使用exit退出,重新登录才生效
Yum -y install net-tools #安装网络相关软件包
yum -y install psmisc #安装支持killall命令的软件
yum -y install gcc make #安装编译工具
yum -y install pcre-devel #安装可以让nginx支持正则的软件包
yum -y install openssl-devel #安装可以让nginx支持安装加密网站的软件包
yum list | grep bash #查询名字和bash有关的软件包
yum -y install bash-completion #安装支持tab键的软件包,装好之后,使用exit退出,重新登录才生效
Yum -y install net-tools #安装网络相关软件包
yum -y install psmisc #安装支持killall命令的软件
yum -y install gcc make #安装编译工具
yum -y install pcre-devel #安装可以让nginx支持正则的软件包
yum -y install openssl-devel #安装可以让nginx支持安装加密网站的软件包
Nginx
安装源码包:
yum -y install gcc make #安装编译工具
yum -y install pcre-devel #正则表达式依赖包
yum -y install openssl-devel #SSL加密依赖包
tar -xf nginx-1.22.1.tar.gz
cd nginx-1.22.1
[.....1] ./configure \
--prefix=/usr/local/nginx \ #指定安装路径
--user=nginx \ #指定用户
--group=nginx \ #指定组
--with-http_ssl_module #开启SSL加密功能
make #编译
make install #安装
yum -y install gcc make #安装编译工具
yum -y install pcre-devel #正则表达式依赖包
yum -y install openssl-devel #SSL加密依赖包
tar -xf nginx-1.22.1.tar.gz
cd nginx-1.22.1
[.....1] ./configure \
--prefix=/usr/local/nginx \ #指定安装路径
--user=nginx \ #指定用户
--group=nginx \ #指定组
--with-http_ssl_module #开启SSL加密功能
make #编译
make install #安装
useradd -s /sbin/nologin nginx
/usr/local/nginx/sbin/nginx #启动服务
/usr/local/nginx/sbin/nginx -s stop #关闭服务
/usr/local/nginx/sbin/nginx -s reload #重新加载配置文件
/usr/local/nginx/sbin/nginx -V #查看软件信息
ss -unltp | grep nginx #只能查看自己的信息
ss -antpu | grep nginx #查看所有的信息
/usr/local/nginx/sbin/nginx #启动服务
/usr/local/nginx/sbin/nginx -s stop #关闭服务
/usr/local/nginx/sbin/nginx -s reload #重新加载配置文件
/usr/local/nginx/sbin/nginx -V #查看软件信息
ss -unltp | grep nginx #只能查看自己的信息
ss -antpu | grep nginx #查看所有的信息
用户认证
vim /user/local/nginx/conf/nginx.conf #配置文件 写入
server {
listen 80;
server_name localhost;
auth_basic "password"; #指令+参数;开启用户认证功能
auth_basic_user_file "/usr/local/nginx/pass"; #认证的密码文件
/user/local/nginx/sbin/nginx -s reload #重新加载配置 不报错
yum -y install httpd-tools #软件网站辅助包
htpasswd -c /usr/local/nginx/pass tom #创建密码文件
htpasswd /usr/local/nginx/pass jerry #追加创建,不加c,加c 会覆盖
server {
listen 80;
server_name localhost;
auth_basic "password"; #指令+参数;开启用户认证功能
auth_basic_user_file "/usr/local/nginx/pass"; #认证的密码文件
/user/local/nginx/sbin/nginx -s reload #重新加载配置 不报错
yum -y install httpd-tools #软件网站辅助包
htpasswd -c /usr/local/nginx/pass tom #创建密码文件
htpasswd /usr/local/nginx/pass jerry #追加创建,不加c,加c 会覆盖
配置文件:
/user/local/nginx/conf/nginx.conf
/user/local/nginx/conf/nginx.conf.default 配置文件,原版模板
/user/local/nginx/conf/nginx.conf
/user/local/nginx/conf/nginx.conf.default 配置文件,原版模板
web 虚拟主机
[root@proxy nginx]# vim /usr/local/nginx/conf/nginx.conf
http {
.. ..
server {
listen 80; #端口
server_name www.a.com; #新虚拟主机定义域名
root html; #指定网站根路径(/usr/local/nginx/html)
index index.html index.htm; #默认页面,可以写两个,先读取index.html
}
server {
listen 80; #端口
server_name www.b.com; #默认的虚拟主机,修改域名
root html_b; #指定网站根路径
index index.html index.htm; #默认页面
}
}
mkdir html_b #创建b网站的目录
echo "nginx-A~~~" > html/index.html #创建a网站测试页
echo "nginx-B~~~" > html_b/index.html #创建b网站测试页
sbin/nginx -s reload #之后重新加载配置文件,服务必须是开启状态
vim /etc/hosts #修改hosts文件添加ip和域名的映射关系
192.168.99.5 www.a.com www.b.com
curl www.a.com #检测a网站或b网站都可以看到页面
http {
.. ..
server {
listen 80; #端口
server_name www.a.com; #新虚拟主机定义域名
root html; #指定网站根路径(/usr/local/nginx/html)
index index.html index.htm; #默认页面,可以写两个,先读取index.html
}
server {
listen 80; #端口
server_name www.b.com; #默认的虚拟主机,修改域名
root html_b; #指定网站根路径
index index.html index.htm; #默认页面
}
}
mkdir html_b #创建b网站的目录
echo "nginx-A~~~" > html/index.html #创建a网站测试页
echo "nginx-B~~~" > html_b/index.html #创建b网站测试页
sbin/nginx -s reload #之后重新加载配置文件,服务必须是开启状态
vim /etc/hosts #修改hosts文件添加ip和域名的映射关系
192.168.99.5 www.a.com www.b.com
curl www.a.com #检测a网站或b网站都可以看到页面
window文件:
windows环境配置hosts文件
C:\Windows\System32\drivers\etc\hosts
右键---属性---安全---编辑---users---完全控制打钩
然后用文本打开hosts,在最后添加
192.168.99.5 www.a.com www.b.com
windows环境配置hosts文件
C:\Windows\System32\drivers\etc\hosts
右键---属性---安全---编辑---users---完全控制打钩
然后用文本打开hosts,在最后添加
192.168.99.5 www.a.com www.b.com
SSL虚拟主机
源码安装Nginx时必须使用--with-http_ssl_module参数,
启用加密模块,对于需要进行SSL加密处理的站点添加ssl相关指令(设置网站需要的私钥和证书)。
加密算法一般分为对称算法、非对称算法、信息摘要(hash值)。
对称算法有:AES、DES,主要应用在单机数据加密。
非对称算法有:RSA、DSA,主要应用在网络数据加密。
信息摘要:MD5、sha256,主要应用在数据完整性校验。
启用加密模块,对于需要进行SSL加密处理的站点添加ssl相关指令(设置网站需要的私钥和证书)。
加密算法一般分为对称算法、非对称算法、信息摘要(hash值)。
对称算法有:AES、DES,主要应用在单机数据加密。
非对称算法有:RSA、DSA,主要应用在网络数据加密。
信息摘要:MD5、sha256,主要应用在数据完整性校验。
vim /usr/local/nginx/conf/nginx.conf
… …
server {
listen 443 ssl;
server_name localhost;
ssl_certificate cert.pem; #这里是证书文件
ssl_certificate_key cert.key; #这里是私钥文件
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root https; #加密网站根目录
index index.html index.htm;
}
}
末行模式: :98,115s/#// 取消98-115行的注释
… …
server {
listen 443 ssl;
server_name localhost;
ssl_certificate cert.pem; #这里是证书文件
ssl_certificate_key cert.key; #这里是私钥文件
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root https; #加密网站根目录
index index.html index.htm;
}
}
末行模式: :98,115s/#// 取消98-115行的注释
公钥/私钥
openssl genrsa > conf/cert.key #生成私钥
openssl req -x509 -key conf/cert.key > conf/cert.pem #生成证书,生成过程会询问诸如你在哪个国家之类的问题
Country Name (2 letter code) [XX]:dc 国家名
State or Province Name (full name) []:dc 省份
Locality Name (eg, city) [Default City]:dc 城市
Organization Name (eg, company) [Default Company Ltd]:dc 公司
Organizational Unit Name (eg, section) []:dc 部门
Common Name (eg, your name or your server's hostname) []:dc 服务器名称
Email Address []:dc@dc.com 电子邮件
openssl req -x509 -key conf/cert.key > conf/cert.pem #生成证书,生成过程会询问诸如你在哪个国家之类的问题
Country Name (2 letter code) [XX]:dc 国家名
State or Province Name (full name) []:dc 省份
Locality Name (eg, city) [Default City]:dc 城市
Organization Name (eg, company) [Default Company Ltd]:dc 公司
Organizational Unit Name (eg, section) []:dc 部门
Common Name (eg, your name or your server's hostname) []:dc 服务器名称
Email Address []:dc@dc.com 电子邮件
验证
mkdir https #创建安全网站的目录
echo "https~~~~ " > https/index.html #创建安全网站的页面
sbin/nginx #服务没开的话开服务
sbin/nginx -s reload #已经开了的话重加载配置
curl -k https://192.168.99.5 #检验,-k是忽略安全风险
https~~~~ #这个内容实验成功
systemctl stop firewalld #如果用真机的火狐浏览器测试需要
关闭防火墙,然后输入https://192.168.99.5
echo "https~~~~ " > https/index.html #创建安全网站的页面
sbin/nginx #服务没开的话开服务
sbin/nginx -s reload #已经开了的话重加载配置
curl -k https://192.168.99.5 #检验,-k是忽略安全风险
https~~~~ #这个内容实验成功
systemctl stop firewalld #如果用真机的火狐浏览器测试需要
关闭防火墙,然后输入https://192.168.99.5
hash值:校验数据完整性
md5sum
md5sum 文件名 | md5sum 多次对比结果,如果数据变化 则被篡改
md5sum 文件名 | md5sum 多次对比结果,如果数据变化 则被篡改
sha256sum
sha512sum
sha512sum
day02
动态网站 解析
nginx用网络连接php-fpm
部署LNMP
linux操作系统
Nginx网站服务软件
MySQL、MariaDB数据库
网站开发语言(php\python)
Nginx网站服务软件
MySQL、MariaDB数据库
网站开发语言(php\python)
1.nginx:
源码安装---解码---./configure---make && make install
2.mariadb(数据库客户端软件)
mariadb-server(数据库服务器软件)
mariadb-devel(其他客户端软件的依赖包)
3.php(解释器)
php-mysqlnd(PHP的数据库扩展包)
php-fpm(进程管理器服务,前两安装会自动安装)
源码安装---解码---./configure---make && make install
2.mariadb(数据库客户端软件)
mariadb-server(数据库服务器软件)
mariadb-devel(其他客户端软件的依赖包)
3.php(解释器)
php-mysqlnd(PHP的数据库扩展包)
php-fpm(进程管理器服务,前两安装会自动安装)
步骤一: php-fpm配置文件
打开php-fpm配置文件,注意该配置文件中;(分号)是注释
vim /etc/php-fpm.d/www.conf
listen = 127.0.0.1:9000 #php-fpm端口号(使用网络通信)
;listen = /run/php-fpm/www.sock #注释该行
pm.max_children = 50 #最大进程数量
pm.start_servers = 5 #最小进程数量
打开php-fpm配置文件,注意该配置文件中;(分号)是注释
vim /etc/php-fpm.d/www.conf
listen = 127.0.0.1:9000 #php-fpm端口号(使用网络通信)
;listen = /run/php-fpm/www.sock #注释该行
pm.max_children = 50 #最大进程数量
pm.start_servers = 5 #最小进程数量
步骤二:修改Nginx配置文件并启动服务
vim /usr/local/nginx/conf/nginx.conf
...
location ~ \.php$ { #~是使用正则表达式,匹配以.php结尾
root html;
fastcgi_pass 127.0.0.1:9000; #将请求转发给本机9000端口
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME ...........;
include fastcgi.conf; #加载fastcgi配置文件
}
vim /usr/local/nginx/conf/nginx.conf
...
location ~ \.php$ { #~是使用正则表达式,匹配以.php结尾
root html;
fastcgi_pass 127.0.0.1:9000; #将请求转发给本机9000端口
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME ...........;
include fastcgi.conf; #加载fastcgi配置文件
}
步骤三:测试LNMP架构能否解析PHP页面
/usr/local/nginx/sbin/nginx -s reload
cp ~/lnmp_soft/php_scripts/mysql.php /usr/local/nginx/html
#拷贝动态网站测试页面到nginx中
http://192.168.99.5/mysql.php
客户端使用浏览器访问服务器PHP首页文档,检验是否成功
http://192.168.99.5/mysql.php
然后修改数据库内容进行测试
mysql #进入数据库
create user dc@localhost identified by '123'; #创建测试账户
quit; #退出
修改默认配置
...
location / {
root html;
index index.php index.html index.htm;
#设置默认首页为index.php,当用户在浏览器地址栏中只写域名或IP,
不说访问什么页面时,服务器会把默认首页index.php返回给用户
}
...
/usr/local/nginx/sbin/nginx -s reload
cp ~/lnmp_soft/php_scripts/mysql.php /usr/local/nginx/html
#拷贝动态网站测试页面到nginx中
http://192.168.99.5/mysql.php
客户端使用浏览器访问服务器PHP首页文档,检验是否成功
http://192.168.99.5/mysql.php
然后修改数据库内容进行测试
mysql #进入数据库
create user dc@localhost identified by '123'; #创建测试账户
quit; #退出
修改默认配置
...
location / {
root html;
index index.php index.html index.htm;
#设置默认首页为index.php,当用户在浏览器地址栏中只写域名或IP,
不说访问什么页面时,服务器会把默认首页index.php返回给用户
}
...
Nginx的默认访问日志文件为/usr/local/nginx/logs/access.log
Nginx的默认错误日志文件为/usr/local/nginx/logs/error.log
PHP默认错误日志文件为/var/log/php-fpm/www-error.log
Nginx的默认错误日志文件为/usr/local/nginx/logs/error.log
PHP默认错误日志文件为/var/log/php-fpm/www-error.log
nginx用socket方式连接php-fpm
1.php-fpm:
vim /etc/php-fpm.d/www.conf
[www]
;listen = 127.0.0.1:9000 #注释或删除该行
listen = /run/php-fpm/www.sock #socket方式(使用进程通信)
listen.acl_users = apache,nginx,nobody #添加nobody账户
systemctl restart php-fpm.service
ss -unltp | grep php-fpm #无法查看
ls -l /run/php-fpm/www.sock #查看 有acl策略
getfacl /run/php-fpm/www.sock
vim /etc/php-fpm.d/www.conf
[www]
;listen = 127.0.0.1:9000 #注释或删除该行
listen = /run/php-fpm/www.sock #socket方式(使用进程通信)
listen.acl_users = apache,nginx,nobody #添加nobody账户
systemctl restart php-fpm.service
ss -unltp | grep php-fpm #无法查看
ls -l /run/php-fpm/www.sock #查看 有acl策略
getfacl /run/php-fpm/www.sock
2.nginx:
vim /usr/local/nginx/conf/nginx.conf
...
location ~ \.php$ { #~是使用正则表达式,匹配以.php结尾
root html;
#fastcgi_pass 127.0.0.1:9000; #注释或删除该行
fastcgi_pass unix:/run/php-fpm/www.sock; #将请求转发给php-fpm进程
......................
}
vim /usr/local/nginx/conf/nginx.conf
...
location ~ \.php$ { #~是使用正则表达式,匹配以.php结尾
root html;
#fastcgi_pass 127.0.0.1:9000; #注释或删除该行
fastcgi_pass unix:/run/php-fpm/www.sock; #将请求转发给php-fpm进程
......................
}
地址重写
nginx高级技术
nginx高级技术
rewrite 旧地址 新地址 选项
匹配正则
匹配正则
1.同一网站:
vim conf/nginx.conf
修改一:.. ..
server {
listen 80;
server_name localhost;
rewrite /a.html /b.html;
...........................
修改二:
server {
listen 80;
server_name localhost;
rewrite /a.html /b.html redirect; #地址栏随之发生改变
...........................
vim conf/nginx.conf
修改一:.. ..
server {
listen 80;
server_name localhost;
rewrite /a.html /b.html;
...........................
修改二:
server {
listen 80;
server_name localhost;
rewrite /a.html /b.html redirect; #地址栏随之发生改变
...........................
修改三:
server {
listen 80;
server_name localhost;
rewrite /a.html$ /b.html redirect; #严格匹配 a.html结尾
...........................
修改四:
server {
listen 80;
server_name localhost;
rewrite ^/a.html$ /b.html redirect; #严格匹配 以a.html开头结尾
...........................
修改五:
server {
listen 80;
server_name localhost;
rewrite ^/a\.html$ /b.html redirect; #.在正则表示任意,加转译\,只能表示.,严格匹配a.html
...........................
server {
listen 80;
server_name localhost;
rewrite /a.html$ /b.html redirect; #严格匹配 a.html结尾
...........................
修改四:
server {
listen 80;
server_name localhost;
rewrite ^/a.html$ /b.html redirect; #严格匹配 以a.html开头结尾
...........................
修改五:
server {
listen 80;
server_name localhost;
rewrite ^/a\.html$ /b.html redirect; #.在正则表示任意,加转译\,只能表示.,严格匹配a.html
...........................
2.不同网站:
修改一:
vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
rewrite / http://www.tmooc.cn/;
....................................
修改一:
vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
rewrite / http://www.tmooc.cn/;
....................................
修改二:
vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
rewrite /(.*) http://www.tmooc.cn/$1;
...................................
vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
rewrite /(.*) http://www.tmooc.cn/$1;
...................................
不同浏览器:
mkdir html/firefox
echo firefox~~ > html/firefox/abc.html #火狐专用页面
echo others~~ > html/abc.html #其他浏览器专用页面
vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
if ($http_user_agent ~* firefox) { #设置火狐浏览器
rewrite (.*) /firefox/$1; #就进行地址重写,用户看火狐专用页面$http_user_agent是nginx内置变量,存储用户信息,~是匹配正则包含,*是忽略大小写
}
mkdir html/firefox
echo firefox~~ > html/firefox/abc.html #火狐专用页面
echo others~~ > html/abc.html #其他浏览器专用页面
vim /usr/local/nginx/conf/nginx.conf
.. ..
server {
listen 80;
server_name localhost;
if ($http_user_agent ~* firefox) { #设置火狐浏览器
rewrite (.*) /firefox/$1; #就进行地址重写,用户看火狐专用页面$http_user_agent是nginx内置变量,存储用户信息,~是匹配正则包含,*是忽略大小写
}
选项:
redirect 临时重定向,状态码302,爬虫不更新URI
permanent 永久重定向,状态码301,爬虫更新URI
last 不再读其他语句,但还会继续匹配其他location语句
break 不再读其他语句,结束请求
redirect 临时重定向,状态码302,爬虫不更新URI
permanent 永久重定向,状态码301,爬虫更新URI
last 不再读其他语句,但还会继续匹配其他location语句
break 不再读其他语句,结束请求
1.last:
echo "nginx-c~~" > html/c.html #准备素材c页面
rewrite /a.html /b.html last; #没有其他location语句时,打开b页面
rewrite /b.html /c.html ;
2.break
location / { #此处为默认的location
rewrite /a.html /b.html break; #break可以阻止后面的语句
root html;
index index.html index.htm;
}
location /b.html { #这里是新添加的location
rewrite /b.html /c.html;
}
##last 用于同一个location; break用于不同location!
echo "nginx-c~~" > html/c.html #准备素材c页面
rewrite /a.html /b.html last; #没有其他location语句时,打开b页面
rewrite /b.html /c.html ;
2.break
location / { #此处为默认的location
rewrite /a.html /b.html break; #break可以阻止后面的语句
root html;
index index.html index.htm;
}
location /b.html { #这里是新添加的location
rewrite /b.html /c.html;
}
##last 用于同一个location; break用于不同location!
day03
nginx 调度器、集群优化
HTTP
反向代理:网站业务代理
优化:权重、健康检查、
ip_hash、down
反向代理:网站业务代理
优化:权重、健康检查、
ip_hash、down
1.轮询:逐一循环调度,默认值1
vim /usr/local/nginx/conf/nginx.conf
.. ..
http {
.. ..
#使用upstream定义后端服务器集群,集群名称任意(如webserver)
#使用server定义集群中的具体服务器和端口
upstream webserver {
server 192.168.99.100:80;
server 192.168.99.200:80;
}
.. ..
server {
listen 80;
server_name localhost;
location / { #通过proxy_pass将用户的请求转发给webserver集群
proxy_pass http://webserver; #webserver 自定义名,保持一致即可!
}
vim /usr/local/nginx/conf/nginx.conf
.. ..
http {
.. ..
#使用upstream定义后端服务器集群,集群名称任意(如webserver)
#使用server定义集群中的具体服务器和端口
upstream webserver {
server 192.168.99.100:80;
server 192.168.99.200:80;
}
.. ..
server {
listen 80;
server_name localhost;
location / { #通过proxy_pass将用户的请求转发给webserver集群
proxy_pass http://webserver; #webserver 自定义名,保持一致即可!
}
2.weight:指定轮询几率,权重值与访问比率成正比(正整数),加权轮询!
。。。。。。。
server 192.168.99.100:80 weight=2;
server 192.168.99.100:80;
。。。。。。。
健康检查设置:
。。。。。。。
server 192.168.99.100:80;
server 192.168.99.100:80 max_fails=2 fail_timeout=30;
。。。。。。。
。。。。。。。
server 192.168.99.100:80 weight=2;
server 192.168.99.100:80;
。。。。。。。
健康检查设置:
。。。。。。。
server 192.168.99.100:80;
server 192.168.99.100:80 max_fails=2 fail_timeout=30;
。。。。。。。
集群优化:权重---加权轮询---健康检查---IP_hash
集群健康检查:集群自带健康检查,默认检查次数1次,默认再次检查时间10s;
默认值受网络延迟影响,可自定义;
# max_fails可以设置后台服务器的失败次数
# fail_timeout可以设置后台服务器的失败超时时间
集群健康检查:集群自带健康检查,默认检查次数1次,默认再次检查时间10s;
默认值受网络延迟影响,可自定义;
# max_fails可以设置后台服务器的失败次数
# fail_timeout可以设置后台服务器的失败超时时间
3.ip_hsah:相同客户机,访问相同服务器,再次访问不再轮询
upstream webserver {
ip_hash;
server 192.168.99.100:80;
。。。。。。。
#根据客户端前三位IP值,固定后端服务器
upstream webserver {
ip_hash;
server 192.168.99.100:80;
。。。。。。。
#根据客户端前三位IP值,固定后端服务器
4.添加down标记:让集群主机暂时不参与集群活动
upstream webserver {
server 192.168.99.100:80 down;
server 192.168.99.200:80;
..............................
upstream webserver {
server 192.168.99.100:80 down;
server 192.168.99.200:80;
..............................
TCP/UDP
四层代理:其他业务集群
四层代理:其他业务集群
四层代理:其他业务集群
nginx需要添加模块
./configure --with-stream
nginx需要添加模块
./configure --with-stream
vim /usr/local/nginx/conf/nginx.conf
stream {
upstream backend {
server 192.168.99.100:22; #后端SSH服务器的IP和端口
server 192.168.99.200:22;
}
server {
listen 12345; #Nginx监听的端口
proxy_pass backend;
}
}
http {
.. ..
ssh 192.168.88.5 -p 12345 #使用该命令多次访问查看效果
如果配置没有错误,但无法反复登陆web1与web2,可以按下列方式解决:
rm -rf ~/.ssh/known_hosts #在proxy中删除记录文件
stream {
upstream backend {
server 192.168.99.100:22; #后端SSH服务器的IP和端口
server 192.168.99.200:22;
}
server {
listen 12345; #Nginx监听的端口
proxy_pass backend;
}
}
http {
.. ..
ssh 192.168.88.5 -p 12345 #使用该命令多次访问查看效果
如果配置没有错误,但无法反复登陆web1与web2,可以按下列方式解决:
rm -rf ~/.ssh/known_hosts #在proxy中删除记录文件
nginx 网站功能
步骤一:自定义报错页面
HTTP常见状态码列表:
200 正常
301 & 302 重定向
400 请求语法错误
401 访问被拒绝
403 禁止访问
404 资源找不到
414 请求URI头部太长
500 服务器内部错误
502 代理服务器无法正常获取下一个服务器正常的应答
vim /usr/local/nginx/conf/nginx.conf
.. ..
charset utf-8; #仅在需要中文时修改该选项
error_page 404 /test.html; #自定义错误页面,显示自定义test.html中的内容
.. ..
HTTP常见状态码列表:
200 正常
301 & 302 重定向
400 请求语法错误
401 访问被拒绝
403 禁止访问
404 资源找不到
414 请求URI头部太长
500 服务器内部错误
502 代理服务器无法正常获取下一个服务器正常的应答
vim /usr/local/nginx/conf/nginx.conf
.. ..
charset utf-8; #仅在需要中文时修改该选项
error_page 404 /test.html; #自定义错误页面,显示自定义test.html中的内容
.. ..
步骤二:如何查看服务器状态信息(非常重要的功能)
编译安装时使用--with-http_stub_status_module开启状态页面模块
如果要添加模块,但不想删除之前nginx数据,可以将nginx源码目录下的objs目录中的nginx文件拷贝到nginx的sbin目录下替代现有主程序,然后killall nginx 再重启即可
1.--------------------------------------------------------------------------------------------------------------
./configure \
> --with-stream #开启4层代理模块
> --with-http_stub_status_module #开启status状态页面
2.--------------------------------------------------------------------------------------------------------------
make #编译 ,已经安装过,直接编译即可
[....nginx-1.22.1]# cp objs/nginx /usr/local/nginx/sbin/ #覆盖原文件
/usr/local/nginx/sbin/nginx #开启nginx
3.--------------------------------------------------------------------------------------------------------------
vim /usr/local/nginx/conf/nginx.conf
… …
location /status {
stub_status on;
#allow IP地址;
#deny all;
.................................
4.--------------------------------------------------------------------------------------------------------------
curl http://192.168.99.5/status
Active connections: 1 ##Active connections:当前活动的连接数量
server accepts handled requests Accepts:已经接受客户端的连接总数量
10 10 3 Handled:已经处理客户端的连接总数量
Reading: 0 Writing: 1 Waiting: 0 Requests:客户端发送的请求数量
Reading:当前服务器正在读取客户端请求头的数量
Writing:当前服务器正在写响应信息的数量
Waiting:当前多少客户端在等待服务器的响应
编译安装时使用--with-http_stub_status_module开启状态页面模块
如果要添加模块,但不想删除之前nginx数据,可以将nginx源码目录下的objs目录中的nginx文件拷贝到nginx的sbin目录下替代现有主程序,然后killall nginx 再重启即可
1.--------------------------------------------------------------------------------------------------------------
./configure \
> --with-stream #开启4层代理模块
> --with-http_stub_status_module #开启status状态页面
2.--------------------------------------------------------------------------------------------------------------
make #编译 ,已经安装过,直接编译即可
[....nginx-1.22.1]# cp objs/nginx /usr/local/nginx/sbin/ #覆盖原文件
/usr/local/nginx/sbin/nginx #开启nginx
3.--------------------------------------------------------------------------------------------------------------
vim /usr/local/nginx/conf/nginx.conf
… …
location /status {
stub_status on;
#allow IP地址;
#deny all;
.................................
4.--------------------------------------------------------------------------------------------------------------
curl http://192.168.99.5/status
Active connections: 1 ##Active connections:当前活动的连接数量
server accepts handled requests Accepts:已经接受客户端的连接总数量
10 10 3 Handled:已经处理客户端的连接总数量
Reading: 0 Writing: 1 Waiting: 0 Requests:客户端发送的请求数量
Reading:当前服务器正在读取客户端请求头的数量
Writing:当前服务器正在写响应信息的数量
Waiting:当前多少客户端在等待服务器的响应
步骤三:优化Nginx并发量
1.
关闭selinux firewalld 装包http-tools
ab -n 100 -c 100 http://192.168.99.5/ #-n任务量,-c是连接数
2.--------------------------------------------------------------------------------
vim /usr/local/nginx/conf/nginx.conf
.. ..
worker_processes 2; #调整为与当前CPU核心数量一致
events {
worker_connections 50000; #每个worker最大并发连接数
}
.. ..
查看进程:ss -unltp | grep nginx
ps aux | grep nginx
3.优化系统本身:------------------------------------------------------------
ulimit -n #查看最大文件数量
ulimit -n 100000 #临时设置最大文件数量
vim /etc/security/limits.conf
.. ..
* soft nofile 100000
* hard nofile 100000
#用户或组 硬限制或软限制 需要限制的项目 限制的值
1.
关闭selinux firewalld 装包http-tools
ab -n 100 -c 100 http://192.168.99.5/ #-n任务量,-c是连接数
2.--------------------------------------------------------------------------------
vim /usr/local/nginx/conf/nginx.conf
.. ..
worker_processes 2; #调整为与当前CPU核心数量一致
events {
worker_connections 50000; #每个worker最大并发连接数
}
.. ..
查看进程:ss -unltp | grep nginx
ps aux | grep nginx
3.优化系统本身:------------------------------------------------------------
ulimit -n #查看最大文件数量
ulimit -n 100000 #临时设置最大文件数量
vim /etc/security/limits.conf
.. ..
* soft nofile 100000
* hard nofile 100000
#用户或组 硬限制或软限制 需要限制的项目 限制的值
步骤四:优化Nginx数据包头缓存,支持超长地址
优化前,使用脚本测试超长头部请求是否能获得响应
默认情况下nginx无法支持长地址栏,会报414错误
cat lnmp_soft/buffer.sh
#!/bin/bash
URL=http://192.168.99.5/index.html?
for i in {1..5000}
do
URL=${URL}v$i=$i
done
curl $URL #经过5000次循环后,生成一个超长的URL地址
[root@proxy ~]# ~/lnmp_soft/buffer.sh
<center><h1>414 Request-URI Too Large</h1></center> #访问失败
vim
vim /usr/local/nginx/conf/nginx.conf
.. ..
http {
client_header_buffer_size 200k; #请求包头部信息的缓存大小
large_client_header_buffers 4 200k; #最大请求包头部信息的缓存个数与容量
.. ..
}
优化前,使用脚本测试超长头部请求是否能获得响应
默认情况下nginx无法支持长地址栏,会报414错误
cat lnmp_soft/buffer.sh
#!/bin/bash
URL=http://192.168.99.5/index.html?
for i in {1..5000}
do
URL=${URL}v$i=$i
done
curl $URL #经过5000次循环后,生成一个超长的URL地址
[root@proxy ~]# ~/lnmp_soft/buffer.sh
<center><h1>414 Request-URI Too Large</h1></center> #访问失败
vim
vim /usr/local/nginx/conf/nginx.conf
.. ..
http {
client_header_buffer_size 200k; #请求包头部信息的缓存大小
large_client_header_buffers 4 200k; #最大请求包头部信息的缓存个数与容量
.. ..
}
步骤五:浏览器本地缓存静态数据
修改Nginx配置文件,定义对静态页面的缓存时间
vim /usr/local/nginx/conf/nginx.conf
http {
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
expires 30d; #定义客户端缓存时间为30天
}
修改Nginx配置文件,定义对静态页面的缓存时间
vim /usr/local/nginx/conf/nginx.conf
http {
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
expires 30d; #定义客户端缓存时间为30天
}
day04
准备环境:(部署)
装包 nginx mariadb php
配置:web1 web2 动静分离; proxy 网站的反向代理
php:
方式一:网络 /etc/php-fpm.d/www.conf 方式二:进程接口
listen = 127.0.0.1:9000 listen = /run/php-fpm/www.sock
listen.acl_users = apache,nginx,nobody
vim conf/nginx.conf-------------网站\\\\进程接口
装包 nginx mariadb php
配置:web1 web2 动静分离; proxy 网站的反向代理
php:
方式一:网络 /etc/php-fpm.d/www.conf 方式二:进程接口
listen = 127.0.0.1:9000 listen = /run/php-fpm/www.sock
listen.acl_users = apache,nginx,nobody
vim conf/nginx.conf-------------网站\\\\进程接口
session与cookie
Session:存储在服务器端,保存用户名、登陆状态等信息。
Cookies:由服务器下发给客户端,保存在客户端的一个文件里。保存的内容主要包括:SessionID。
session文件:
ls /var/lib/php/session
ls /var/lib/php/session
session共享
redis服务
redis服务
redis服务----内存存数据----数据库-----存储有生命周期的数据
mariadb-----硬盘存数据----数据库-----永久存储数据
mariadb-----硬盘存数据----数据库-----永久存储数据
Redis(Remote Dictionary Server )远程字典服务
Key-Value数据库
数据可以存储在内存中以保证高性能
Key-Value数据库
数据可以存储在内存中以保证高性能
装包:单独一台虚拟机存
yum -y install redis
默认端口:6379
配置文件:/etc/redis.conf
yum -y install redis
默认端口:6379
配置文件:/etc/redis.conf
vim /etc/redis.conf
#bind 127.0.0.1
protected-mode no #不开启保护模式
#bind 127.0.0.1
protected-mode no #不开启保护模式
redis-cli #进入redis命令行
set abc 456 #创建变量abc,里面的值是456
get abc #查看变量abc的值
keys * #查看当前库中所有key
del abc #删除变量abc
flushall #删除所有数据
quit #退出
set abc 456 #创建变量abc,里面的值是456
get abc #查看变量abc的值
keys * #查看当前库中所有key
del abc #删除变量abc
flushall #删除所有数据
quit #退出
共享设置
yum -y install ~/lnmp_soft/php_scripts/phpredis-5.1.0-1.x86_64.rpm
#有依赖,不能rpm直接安装
vim /etc/php-fpm.d/www.conf #修改该配置文件的两个参数
php_value[session.save_handler] = redis
php_value[session.save_path] = "tcp://192.168.99.5:6379"
systemctl restart php-fpm
清空浏览器的历史记录,再访问http://192.168.99.5仅登录一次即可成功
#有依赖,不能rpm直接安装
vim /etc/php-fpm.d/www.conf #修改该配置文件的两个参数
php_value[session.save_handler] = redis
php_value[session.save_path] = "tcp://192.168.99.5:6379"
systemctl restart php-fpm
清空浏览器的历史记录,再访问http://192.168.99.5仅登录一次即可成功
day05
Tomcat服务器
启动服务:/usr/local/tomcat/bin/startup.sh
关闭服务:usr/local/tomcat/bin/shutdown.sh
配置文件:usr/local/tomcat/conf/server.xml
启动服务:/usr/local/tomcat/bin/startup.sh
关闭服务:usr/local/tomcat/bin/shutdown.sh
配置文件:usr/local/tomcat/conf/server.xml
概述:
java 是一种跨平台的、面向对象的程序设计语言,具有卓越的通用性/高效性/平台移植性、安全性
--java SE 标准版 --java EE 企业版
JDK是Sun针对java开发者推出的java语言的软件开发工具包
是java的核心
---java运行环境 ---java工具 ---java基础的类库
JRE是JDK的子集
----java虚拟机 ---java核心类库和支持文件 ----不包括开发工具———编译器、调试器、其他工具
Servlet 是java扩展web服务器功能的组建规范
IBM webspherre Oracle weblogic
Apache tomcat RedHat Jboss
java 是一种跨平台的、面向对象的程序设计语言,具有卓越的通用性/高效性/平台移植性、安全性
--java SE 标准版 --java EE 企业版
JDK是Sun针对java开发者推出的java语言的软件开发工具包
是java的核心
---java运行环境 ---java工具 ---java基础的类库
JRE是JDK的子集
----java虚拟机 ---java核心类库和支持文件 ----不包括开发工具———编译器、调试器、其他工具
Servlet 是java扩展web服务器功能的组建规范
IBM webspherre Oracle weblogic
Apache tomcat RedHat Jboss
一:
步骤一:部署Tomcat服务器软件
yum -y install java-1.8.0-openjdk #安装JDK
java -version #查看JAVA版本
...oft]# tar -xf apache-tomcat-8.0.30.tar.gz
...oft]# mv apache-tomcat-8.0.30 /usr/local/tomcat
...oft]# ls /usr/local/tomcat
ss -nutlp |grep java #查看java监听的端口
若无法开启三个端口 8080 ;8005 ;8009
mv /dev/random /dev/random.bak
ln -s /dev/urandom /dev/random
killall java
/usr/local/tomcat/bin/startup.sh
http://192.168.99.100:8080 #测试
步骤二:修改Tomcat配置文件
echo "tomcat-test~~~~" > webapps/ROOT/test01.html #创建静态页面
vim /usr/local/tomcat/webapps/ROOT/test02.jsp #测试JSP页面
<html>
<body>
<center>
Now time is: <%=new java.util.Date()%>
</center>
</body>
</html>
步骤一:部署Tomcat服务器软件
yum -y install java-1.8.0-openjdk #安装JDK
java -version #查看JAVA版本
...oft]# tar -xf apache-tomcat-8.0.30.tar.gz
...oft]# mv apache-tomcat-8.0.30 /usr/local/tomcat
...oft]# ls /usr/local/tomcat
ss -nutlp |grep java #查看java监听的端口
若无法开启三个端口 8080 ;8005 ;8009
mv /dev/random /dev/random.bak
ln -s /dev/urandom /dev/random
killall java
/usr/local/tomcat/bin/startup.sh
http://192.168.99.100:8080 #测试
步骤二:修改Tomcat配置文件
echo "tomcat-test~~~~" > webapps/ROOT/test01.html #创建静态页面
vim /usr/local/tomcat/webapps/ROOT/test02.jsp #测试JSP页面
<html>
<body>
<center>
Now time is: <%=new java.util.Date()%>
</center>
</body>
</html>
二:使用Tomcat部署虚拟主机
步骤一:配置服务器虚拟主机
1)修改server.xml配置文件,创建虚拟主机
vim /usr/local/tomcat/conf/server.xml
...
<Host name="www.b.com" appBase="web_b">
</Host>
<Host name="www.a.com" appBase="webapps" unpackWARS="true" autoDeploy="true">
</Host>
2)创建虚拟主机对应的页面根路径并测试
mkdir -p web_b/ROOT #创建b网站的目录
...cat]# echo "tomcat-A~~~" > webapps/ROOT/index.html
...cat]# echo "tomcat-B~~~" > web_b/ROOT/index.html
vim /etc/hosts
192.168.99.100 www.a.com www.b.com
重启 tomcat
curl www.a.com:8080 #测试
tomcat-A~~~
curl www.b.com:8080
tomcat-B~~~
3)查看虚拟主机www.a.com的配置
unpackWARs="true" #自动解war包
autoDeploy="true" #自动更新开发工程师编写的网站功能
yum -y install java-1.8.0-openjdk-devel #安装可以制作war包的工具
tar -cf a.war /var/log #之后可以使用jar命令打war包
cp a.war webapps #将war包放入虚拟主机的网页目录
ls webapps #检查,可以看到已经自动解开,如果无效可以尝试重启tomcat
步骤一:配置服务器虚拟主机
1)修改server.xml配置文件,创建虚拟主机
vim /usr/local/tomcat/conf/server.xml
...
<Host name="www.b.com" appBase="web_b">
</Host>
<Host name="www.a.com" appBase="webapps" unpackWARS="true" autoDeploy="true">
</Host>
2)创建虚拟主机对应的页面根路径并测试
mkdir -p web_b/ROOT #创建b网站的目录
...cat]# echo "tomcat-A~~~" > webapps/ROOT/index.html
...cat]# echo "tomcat-B~~~" > web_b/ROOT/index.html
vim /etc/hosts
192.168.99.100 www.a.com www.b.com
重启 tomcat
curl www.a.com:8080 #测试
tomcat-A~~~
curl www.b.com:8080
tomcat-B~~~
3)查看虚拟主机www.a.com的配置
unpackWARs="true" #自动解war包
autoDeploy="true" #自动更新开发工程师编写的网站功能
yum -y install java-1.8.0-openjdk-devel #安装可以制作war包的工具
tar -cf a.war /var/log #之后可以使用jar命令打war包
cp a.war webapps #将war包放入虚拟主机的网页目录
ls webapps #检查,可以看到已经自动解开,如果无效可以尝试重启tomcat
步骤二:tomcat访问路径与页面位置
测试1:----------------------------------------------------------------------------------
vim /usr/local/tomcat/conf/server.xml
<Host name="www.b.com" appBase="web_b">
<Context path="" docBase="" /> #默认是ROOT,不写直接访问web_b/index.html
</Host>
echo "web_b/ROOT/index.html" > web_b/ROOT/index.html #默认页面路径
echo "web_b/index.html" > web_b/index.html #创建素材,定义新路径
curl www.b.com:8080 #测试可以看到的是默认的页面路径
web_b/ROOT/index.html
重启tomcat
curl www.b.com:8080 #重启后测试可以看到新路径
web_b/index.html
测试2:---------------------------------------------------------------------------------
<Context path="" docBase="abc" /> #修改成abc
mkdir web_b/abc #创建测试目录
echo "web_b/abc/index.html" > web_b/abc/index.html #测试页面
curl www.b.com:8080 #查看,见到新路径
web_b/abc/index.html
测试3:---------------------------------------------------------------------------------
<Context path="" docBase="/abc" /> #修改成/abc,根下的abc,绝对路径,
不受tomcat约束,与appBase无关
curl www.b.com:8080 #得到新路径
/abc/index.html
测试4:---------------------------------------------------------------------------------
<Host name="www.b.com" appBase="web_b>
<Context path="/test" docBase="/abc" />
#path后面添加内容可以匹配用户访问路径,当用户访问www.b.com:8080/test/时,看到的是/abc的内容,如果访问www.b.com:8080就看到web_b/ROOT的内容
curl www.b.com:8080/test/
/abc/index.html
curl www.b.com:8080
web_b/ROOT/index.html
测试5:---------------------------------------------------------------------------------
<Context path="/test" docBase="abc" /> #将/abc改成abc当用户访问www.b.com:8080/test/时,可以看到web_b/abc里的内容当用户访问www.b.com:8080时就看到web_b/ROOT的内容
重启tomcat
测试1:----------------------------------------------------------------------------------
vim /usr/local/tomcat/conf/server.xml
<Host name="www.b.com" appBase="web_b">
<Context path="" docBase="" /> #默认是ROOT,不写直接访问web_b/index.html
</Host>
echo "web_b/ROOT/index.html" > web_b/ROOT/index.html #默认页面路径
echo "web_b/index.html" > web_b/index.html #创建素材,定义新路径
curl www.b.com:8080 #测试可以看到的是默认的页面路径
web_b/ROOT/index.html
重启tomcat
curl www.b.com:8080 #重启后测试可以看到新路径
web_b/index.html
测试2:---------------------------------------------------------------------------------
<Context path="" docBase="abc" /> #修改成abc
mkdir web_b/abc #创建测试目录
echo "web_b/abc/index.html" > web_b/abc/index.html #测试页面
curl www.b.com:8080 #查看,见到新路径
web_b/abc/index.html
测试3:---------------------------------------------------------------------------------
<Context path="" docBase="/abc" /> #修改成/abc,根下的abc,绝对路径,
不受tomcat约束,与appBase无关
curl www.b.com:8080 #得到新路径
/abc/index.html
测试4:---------------------------------------------------------------------------------
<Host name="www.b.com" appBase="web_b>
<Context path="/test" docBase="/abc" />
#path后面添加内容可以匹配用户访问路径,当用户访问www.b.com:8080/test/时,看到的是/abc的内容,如果访问www.b.com:8080就看到web_b/ROOT的内容
curl www.b.com:8080/test/
/abc/index.html
curl www.b.com:8080
web_b/ROOT/index.html
测试5:---------------------------------------------------------------------------------
<Context path="/test" docBase="abc" /> #将/abc改成abc当用户访问www.b.com:8080/test/时,可以看到web_b/abc里的内容当用户访问www.b.com:8080时就看到web_b/ROOT的内容
重启tomcat
步骤三:配置Tomcat支持SSL加密网站
1)创建加密用的私钥和证书文件
keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore
#提示输入密码为:123456
#-genkeypair 生成密钥对
#-alias tomcat 密钥别名
#-keyalg RSA 定义密钥算法为RSA算法
#-keystore 定义密钥文件存储在:/usr/local/tomcat/keystore
2)再次修改server.xml配置文件,创建支持加密连接的Connector
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/usr/local/tomcat/keystore" keystorePass="123456"/>
...
#备注,默认这段Connector被注释掉了,打开注释,添加密钥信息即可
3)重启Tomcat服务器
4)查看 curl -k https://www.a.com:8443/
步骤四:配置Tomcat日志
1)为www.b.com虚拟主机开启日志
vim /usr/local/tomcat/conf/server.xml
<Host name="www.b.com" appBase="web_b" >
...
#从默认localhost虚拟主机中把Valve这段复制过来,适当修改下即可
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="www-b-com" suffix=".log"
pattern="%h %l %u %t "%r" %s %b" /> # 格式
</Host>
directory="logs" : 日志位置 ; prefix="www-b-com":日志自定义名 ; suffix=".log" :扩展名
2)重启
3)查看 cat /usr/local/tomcat/logs/www-b-com.2023.07.12.log
1)创建加密用的私钥和证书文件
keytool -genkeypair -alias tomcat -keyalg RSA -keystore /usr/local/tomcat/keystore
#提示输入密码为:123456
#-genkeypair 生成密钥对
#-alias tomcat 密钥别名
#-keyalg RSA 定义密钥算法为RSA算法
#-keystore 定义密钥文件存储在:/usr/local/tomcat/keystore
2)再次修改server.xml配置文件,创建支持加密连接的Connector
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/usr/local/tomcat/keystore" keystorePass="123456"/>
...
#备注,默认这段Connector被注释掉了,打开注释,添加密钥信息即可
3)重启Tomcat服务器
4)查看 curl -k https://www.a.com:8443/
步骤四:配置Tomcat日志
1)为www.b.com虚拟主机开启日志
vim /usr/local/tomcat/conf/server.xml
<Host name="www.b.com" appBase="web_b" >
...
#从默认localhost虚拟主机中把Valve这段复制过来,适当修改下即可
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="www-b-com" suffix=".log"
pattern="%h %l %u %t "%r" %s %b" /> # 格式
</Host>
directory="logs" : 日志位置 ; prefix="www-b-com":日志自定义名 ; suffix=".log" :扩展名
2)重启
3)查看 cat /usr/local/tomcat/logs/www-b-com.2023.07.12.log
maven应用
使用Maven部署网站系统
软件项目管理工具,基于项目对象模型(POM),可管理项目的构建、报告、文档
配置:/usr/local/maven/conf/settings.xml
步骤一:安装maven工具,以及java环境
将三个文件传入虚拟机root的家目录,原地释放
apache-maven-3.6.3-bin.tar.gz #maven工具包
cms.tar.gz #网站项目
m2.tar.gz #依赖程序,释放之后是隐藏目录.m2
释放tar包,并拷贝到指定目录
tar -xf apache-maven-3.6.3-bin.tar.gz
mv apache-maven-3.6.3 /usr/local/maven
2)安装java依赖包
yum -y install java-1.8.0-openjdk
yum -y install java-devel
3)修改镜像地址,在第158行下添加
vim /usr/local/maven/conf/settings.xml
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
软件项目管理工具,基于项目对象模型(POM),可管理项目的构建、报告、文档
配置:/usr/local/maven/conf/settings.xml
步骤一:安装maven工具,以及java环境
将三个文件传入虚拟机root的家目录,原地释放
apache-maven-3.6.3-bin.tar.gz #maven工具包
cms.tar.gz #网站项目
m2.tar.gz #依赖程序,释放之后是隐藏目录.m2
释放tar包,并拷贝到指定目录
tar -xf apache-maven-3.6.3-bin.tar.gz
mv apache-maven-3.6.3 /usr/local/maven
2)安装java依赖包
yum -y install java-1.8.0-openjdk
yum -y install java-devel
3)修改镜像地址,在第158行下添加
vim /usr/local/maven/conf/settings.xml
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
步骤二:配置数据库并打包项目
1)配置数据库
yum install -y mariadb-server
cd CMS/
cp src/main/resources/shishuocms.properties .
#拷贝网站数据库配置文件到当前目录,该文件定义了数据的用户名和密码等信息
mysql -uroot < sql/install.sql #导入网站相关数据库文件
mysqladmin password 12345678 #修改数据库密码
如果数据库密码输入错误
mysqladmin password -uroot -p #改密码,先输入旧密码,然后输入两次新密码
2)打包项目
/usr/local/maven/bin/mvn clean package #按照之前定义的
公网服务器地址、数据库配置等内容打包项目,注意该命令要在CMS目录进行
步骤三:上线测试
cp ~/lnmp_soft/apache-tomcat-8.0.30/conf/server.xml /usr/local/tomcat/conf/
cp: 是否覆盖 "/usr/local/tomcat/conf/server.xml"? y #把tomcat的配置文件恢复默认
重启tomcat
rm -rf /usr/local/tomcat/webapps/ROOT #删除原有默认页面目录
cp target/shishuocms-2.0.1.war /usr/local/tomcat/webapps/ROOT.war #将新项目移动到tomcat中,然后会自动解包,然后真机打开浏览器访问192.168.99.100:8080看到“师说”页面则成功
1)配置数据库
yum install -y mariadb-server
cd CMS/
cp src/main/resources/shishuocms.properties .
#拷贝网站数据库配置文件到当前目录,该文件定义了数据的用户名和密码等信息
mysql -uroot < sql/install.sql #导入网站相关数据库文件
mysqladmin password 12345678 #修改数据库密码
如果数据库密码输入错误
mysqladmin password -uroot -p #改密码,先输入旧密码,然后输入两次新密码
2)打包项目
/usr/local/maven/bin/mvn clean package #按照之前定义的
公网服务器地址、数据库配置等内容打包项目,注意该命令要在CMS目录进行
步骤三:上线测试
cp ~/lnmp_soft/apache-tomcat-8.0.30/conf/server.xml /usr/local/tomcat/conf/
cp: 是否覆盖 "/usr/local/tomcat/conf/server.xml"? y #把tomcat的配置文件恢复默认
重启tomcat
rm -rf /usr/local/tomcat/webapps/ROOT #删除原有默认页面目录
cp target/shishuocms-2.0.1.war /usr/local/tomcat/webapps/ROOT.war #将新项目移动到tomcat中,然后会自动解包,然后真机打开浏览器访问192.168.99.100:8080看到“师说”页面则成功
day06
1.配置nginx+tomcat集群
1) 在192.168.99.5主机上配置Nginx调度器
2) 在192.168.99.100和192.168.99.200主机上配置Tomcat
3)启服务
1) 在192.168.99.5主机上配置Nginx调度器
2) 在192.168.99.100和192.168.99.200主机上配置Tomcat
3)启服务
1.vim /usr/local/nginx/conf/nginx.conf
http{
upstream toms {
server 192.168.99.100:8080;
server 192.168.99.200:8080;
}
server {
location / {
proxy_pass http://toms;
3.bin/startup.sh
http{
upstream toms {
server 192.168.99.100:8080;
server 192.168.99.200:8080;
}
server {
location / {
proxy_pass http://toms;
3.bin/startup.sh
2.制作nginx的RPM包
1)安装rpm-build软件
2)生成rpmbuild目录结构
3)准备工作,将源码软件复制到SOURCES目录
4)创建并修改SPEC配置文件
5)rpmbuild创建RPM软件包
1)安装rpm-build软件
2)生成rpmbuild目录结构
3)准备工作,将源码软件复制到SOURCES目录
4)创建并修改SPEC配置文件
5)rpmbuild创建RPM软件包
rpmbuild -ba nginx.spec #会报错,没有文件或目录
ls /root/rpmbuild #自动生成的目录结构
cp nginx-1.22.1.tar.gz /root/rpmbuild/SOURCES/
vim /root/rpmbuild/SPECS/nginx.spec
Name:nginx #源码包软件名称
Version:1.22.1 #源码包软件的版本号
Release: 1 #制作的RPM包版本号
Summary: nginx is a web server software. #RPM软件的概述
License:GPL #软件的协议
URL: www.test.com #网址
Source0:nginx-1.22.1.tar.gz #源码包文件的全称
#BuildRequires: #制作RPM时的依赖关系
Requires: pcre-devel openssl-devel #安装RPM时的依赖关系
%description
nginx is an HTTP and reverse proxy server. #软件的详细描述
%post
useradd nginx -s /sbin/nologin #非必需操作:安装后脚本(创建账户)
%prep
%setup -q #自动解压源码包,并cd进入目录
%build
./configure
make %{?_smp_mflags}
%install
make install DESTDIR=%{buildroot}
%files
%doc
/usr/local/nginx/* #对哪些文件与目录打包
%changelog
rpmbuild -ba /root/rpmbuild/SPECS/nginx.spec
yum install /root/rpmbuild/RPMS/x86_64/nginx-1.22.1-10.x86_64.rpm
ls /root/rpmbuild #自动生成的目录结构
cp nginx-1.22.1.tar.gz /root/rpmbuild/SOURCES/
vim /root/rpmbuild/SPECS/nginx.spec
Name:nginx #源码包软件名称
Version:1.22.1 #源码包软件的版本号
Release: 1 #制作的RPM包版本号
Summary: nginx is a web server software. #RPM软件的概述
License:GPL #软件的协议
URL: www.test.com #网址
Source0:nginx-1.22.1.tar.gz #源码包文件的全称
#BuildRequires: #制作RPM时的依赖关系
Requires: pcre-devel openssl-devel #安装RPM时的依赖关系
%description
nginx is an HTTP and reverse proxy server. #软件的详细描述
%post
useradd nginx -s /sbin/nologin #非必需操作:安装后脚本(创建账户)
%prep
%setup -q #自动解压源码包,并cd进入目录
%build
./configure
make %{?_smp_mflags}
%install
make install DESTDIR=%{buildroot}
%files
%doc
/usr/local/nginx/* #对哪些文件与目录打包
%changelog
rpmbuild -ba /root/rpmbuild/SPECS/nginx.spec
yum install /root/rpmbuild/RPMS/x86_64/nginx-1.22.1-10.x86_64.rpm
vpn服务
VPN
linux系统
linux系统
步骤一:启用GRE模块
lsmod #显示模块列表
lsmod | grep ip_gre #确定是否加载了gre模块
modprobe ip_gre #加载模块ip_gre
lsmod #显示模块列表
lsmod | grep ip_gre #确定是否加载了gre模块
modprobe ip_gre #加载模块ip_gre
步骤二:web1主机创建VPN隧道
ip tunnel add tun0 mode gre remote 192.168.99.200 local 192.168.99.100
#ip tunnel add创建隧道(隧道名称为tun0),ip tunnel help可以查看帮助
#mode设置隧道使用gre模式
#local后面跟本机的IP地址,remote后面是与其他主机建立隧道的对方IP地址
ip addr add 10.10.10.100/8 peer 10.10.10.200/8 dev tun0
#为VPN配置隧道IP地址
#为隧道tun0设置本地IP地址10.10.10.100/24
#隧道对面的主机IP为10.10.10.200/24
ip tunnel add tun0 mode gre remote 192.168.99.200 local 192.168.99.100
#ip tunnel add创建隧道(隧道名称为tun0),ip tunnel help可以查看帮助
#mode设置隧道使用gre模式
#local后面跟本机的IP地址,remote后面是与其他主机建立隧道的对方IP地址
ip addr add 10.10.10.100/8 peer 10.10.10.200/8 dev tun0
#为VPN配置隧道IP地址
#为隧道tun0设置本地IP地址10.10.10.100/24
#隧道对面的主机IP为10.10.10.200/24
ip add show tun0 #查看
p link set tun0 up #设置UP
add ------ del #查-----删
p link set tun0 up #设置UP
add ------ del #查-----删
测试 web1 web2
ping 10.10.10.200
ping 10.10.10.100
ping 10.10.10.200
ping 10.10.10.100
翻墙设置(非必需操作)
echo "1" > /proc/sys/net/ipv4/ip_forward #开启路由转发
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j SNAT --to-source 201.1.2.10
echo "1" > /proc/sys/net/ipv4/ip_forward #开启路由转发
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j SNAT --to-source 201.1.2.10
VPN
windows系统
windows系统
创建L2TP+IPSec VPN
步骤一:部署IPSec服务
libreswan #安装加密工具
cp myipsec.conf /etc/ipsec.d/ #复制配置IPSec密钥验证配置文件到ipsec.d目录
配置:
vim /etc/ipsec.d/myipsec.conf #修改配置第16行
left=192.168.99.100 #设置为本机ip(此处在真实环境为公网ip)
vim /etc/ipsec.secrets #修改配置,添加加密信息
192.168.99.100 %any: PSK "randpass"
#%any:是允许任何客户机连接本服务器,PSK预共享密钥,randpass是密码,等windows客户连接vpn服务器时需要该密码
...vpn]#yum -y install ./xl2tpd-1.3.8-2.el7.x86_64.rpm
vim /etc/xl2tpd/xl2tpd.conf #打开配置文件,32、33行
ip range = 10.10.10.10-10.10.10.18 #给客户分配的ip
local ip = 192.168.99.100 #本机ip
vim /etc/ppp/options.xl2tpd #修改配置文件,将第10、16行注释掉,删除掉21行的#以及空格,就可以启用加密
#crtscts #注释该行
#lock #注释该行
vim /etc/ppp/chap-secrets #定义windows客户机的用户名和密码
tom * 123456 * #另起一行创建用户tom,配置密码123456
libreswan #安装加密工具
cp myipsec.conf /etc/ipsec.d/ #复制配置IPSec密钥验证配置文件到ipsec.d目录
配置:
vim /etc/ipsec.d/myipsec.conf #修改配置第16行
left=192.168.99.100 #设置为本机ip(此处在真实环境为公网ip)
vim /etc/ipsec.secrets #修改配置,添加加密信息
192.168.99.100 %any: PSK "randpass"
#%any:是允许任何客户机连接本服务器,PSK预共享密钥,randpass是密码,等windows客户连接vpn服务器时需要该密码
...vpn]#yum -y install ./xl2tpd-1.3.8-2.el7.x86_64.rpm
vim /etc/xl2tpd/xl2tpd.conf #打开配置文件,32、33行
ip range = 10.10.10.10-10.10.10.18 #给客户分配的ip
local ip = 192.168.99.100 #本机ip
vim /etc/ppp/options.xl2tpd #修改配置文件,将第10、16行注释掉,删除掉21行的#以及空格,就可以启用加密
#crtscts #注释该行
#lock #注释该行
vim /etc/ppp/chap-secrets #定义windows客户机的用户名和密码
tom * 123456 * #另起一行创建用户tom,配置密码123456
开启服务:
systemctl start ipsec #开启加密服务
ss -ntulp |grep :500 #检查加密服务
/usr/sbin/xl2tpd #开启vpn服务
ss -ntulp |grep xl2tpd #检查加vpn服务
systemctl start ipsec #开启加密服务
ss -ntulp |grep :500 #检查加密服务
/usr/sbin/xl2tpd #开启vpn服务
ss -ntulp |grep xl2tpd #检查加vpn服务
windows设置:
配置ipv4 为99网段
设置Windows注册表,具体操作如下:
单击"开始",单击"运行",键入"regedit",然后单击"确定"
找到下面的注册表子项,然后单击它:
HKEY_LOCAL_MACHINE\ System\CurrentControlSet\Services\Rasman\Parameters
在"编辑"菜单上,单击"新建"->"DWORD值"---改名为"ProhibitIpSec"
双击----"数值数据"框中,键入"1",然后单击"确定"
退出注册表编辑器,然后重新启动计算机
添加vpn连接
配置ipv4 为99网段
设置Windows注册表,具体操作如下:
单击"开始",单击"运行",键入"regedit",然后单击"确定"
找到下面的注册表子项,然后单击它:
HKEY_LOCAL_MACHINE\ System\CurrentControlSet\Services\Rasman\Parameters
在"编辑"菜单上,单击"新建"->"DWORD值"---改名为"ProhibitIpSec"
双击----"数值数据"框中,键入"1",然后单击"确定"
退出注册表编辑器,然后重新启动计算机
添加vpn连接
systemd 服务管理
使用systemd管理shell脚本
1)编写shell脚本
[root@web1 ~]# vim /root/test.sh
#!/bin/bash
while :
do
echo “zzaaa”
sleep 1
done
2.chmod +x /root/test.sh
3.编写Unit文件
cp /usr/lib/systemd/system/{crond.service,test.service}
vim /usr/lib/systemd/system/test.service
[Unit]
Description=my test script
After=time-sync.target
[Service]
ExecStart=/root/test.sh
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
[Install]
WantedBy=multi-user.target
1)编写shell脚本
[root@web1 ~]# vim /root/test.sh
#!/bin/bash
while :
do
echo “zzaaa”
sleep 1
done
2.chmod +x /root/test.sh
3.编写Unit文件
cp /usr/lib/systemd/system/{crond.service,test.service}
vim /usr/lib/systemd/system/test.service
[Unit]
Description=my test script
After=time-sync.target
[Service]
ExecStart=/root/test.sh
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
[Install]
WantedBy=multi-user.target
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=The Nginx HTTP Server #描述信息
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking #仅启动一个主进程的服务为simple,启动若干子进程为forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID #优雅的杀死,完成当前任务,再退出程序!
#/usr/local/nginx/sbin/nginx -s stop
#kill -s <信号>:指定要发送的信号,可以是信号名称或信号编号
[Install]
WantedBy=multi-user.target
[Unit]
Description=The Nginx HTTP Server #描述信息
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking #仅启动一个主进程的服务为simple,启动若干子进程为forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID #优雅的杀死,完成当前任务,再退出程序!
#/usr/local/nginx/sbin/nginx -s stop
#kill -s <信号>:指定要发送的信号,可以是信号名称或信号编号
[Install]
WantedBy=multi-user.target
day07
Nginx+uWSGI+python
动态页面+依赖软件
动态页面+依赖软件
nginx + python 动态网站
包:gcc make python3 python3-devel
python依赖:———>
安装python的命令:pip3 install 包名
python 可以自己运行,不借助其他
测试无法连接外网,需要将
python-project-demo/learning_logs/templates/base.html
文件中的特效注释
包:gcc make python3 python3-devel
python依赖:———>
安装python的命令:pip3 install 包名
python 可以自己运行,不借助其他
测试无法连接外网,需要将
python-project-demo/learning_logs/templates/base.html
文件中的特效注释
pip3 install pytz-2022.6-py2.py3-none-any.whl
pip3 install Django-1.11.8-py2.py3-none-any.whl
pip3 install django-bootstrap3-11.0.0.tar.gz
解:tar -xf python-project-demo.tar.gz
启服务:python3 名字 runserver 地址:端口
python3 manage.py runserver 0.0.0.0:8000
<!-- {% bootstrap_css %}
{% bootstrap_javascript %}
-->
pip3 install Django-1.11.8-py2.py3-none-any.whl
pip3 install django-bootstrap3-11.0.0.tar.gz
解:tar -xf python-project-demo.tar.gz
启服务:python3 名字 runserver 地址:端口
python3 manage.py runserver 0.0.0.0:8000
<!-- {% bootstrap_css %}
{% bootstrap_javascript %}
-->
1.安装uWSGI
[root@proxy python-project-demo]# cd ..
[root@proxy python]# pip3 install uWSGI-2.0.21.tar.gz
[root@proxy python]# vim myproject.ini
[uwsgi]
socket=127.0.0.1:8000 #与web服务(nginx)通信的接口
chdir=/root/python/python-project-demo #项目的工作目录
wsgi-file=learning_log/wsgi.py #指定项目中的wsgi.py配置文件
daemonize=/var/log/uwsgi.log #指定日志文件位置
#processes=4 #指定启动进程的数目
#master=true #开启主进程管理模式
[root@proxy python-project-demo]# cd ..
[root@proxy python]# pip3 install uWSGI-2.0.21.tar.gz
[root@proxy python]# vim myproject.ini
[uwsgi]
socket=127.0.0.1:8000 #与web服务(nginx)通信的接口
chdir=/root/python/python-project-demo #项目的工作目录
wsgi-file=learning_log/wsgi.py #指定项目中的wsgi.py配置文件
daemonize=/var/log/uwsgi.log #指定日志文件位置
#processes=4 #指定启动进程的数目
#master=true #开启主进程管理模式
2.运行uWSGI
...python]# uwsgi --ini myproject.ini #读取myproject.ini运行uWSGI
3.修改nginx配置文件,添加uWSGI转发
vim /usr/local/nginx/conf/nginx.conf
...
location / {
uwsgi_pass 127.0.0.1:8000; #动态页面交给uWSGI
include uwsgi_params; #调用uWSGI配置文件
.........
...python]# uwsgi --ini myproject.ini #读取myproject.ini运行uWSGI
3.修改nginx配置文件,添加uWSGI转发
vim /usr/local/nginx/conf/nginx.conf
...
location / {
uwsgi_pass 127.0.0.1:8000; #动态页面交给uWSGI
include uwsgi_params; #调用uWSGI配置文件
.........
灰度发布
---使用比较平稳的过度方式升级或者替换产品项目的方法统称
---金丝雀发布
主要作用:
1.及时发现项目问题;2.尽早获取用户反馈信息以改进产品; 3.项目有问题,可将影响控制到最小
---金丝雀发布
主要作用:
1.及时发现项目问题;2.尽早获取用户反馈信息以改进产品; 3.项目有问题,可将影响控制到最小
1.配置Nginx实现用IP测试灰度发布
[root@proxy nginx]# vim /usr/local/nginx/conf/nginx.conf
http {
...
upstream s8001 { #测试集群1
server 192.168.99.100:8001;
}
upstream s8002 { #测试集群2
server 192.168.99.200:8002;
}
upstream default { #正常业务集群
server 192.168.99.100:80;
server 192.168.99.200:80;
}
server {
listen 80;
server_name localhost;
...
set $group "default"; #定义变量$group,默认值default
if ($remote_addr ~ "192.168.99.1"){ #如果客户机ip是99.1就访问集群1
set $group s8001;
}
if ($remote_addr ~ "192.168.99.2"){ #如果客户机ip是99.2就访问集群1
set $group s8002;
}
location / {
proxy_pass http://$group; #调用集群
root html;
index index.html index.htm;
}
...
}
[root@proxy nginx]# vim /usr/local/nginx/conf/nginx.conf
http {
...
upstream s8001 { #测试集群1
server 192.168.99.100:8001;
}
upstream s8002 { #测试集群2
server 192.168.99.200:8002;
}
upstream default { #正常业务集群
server 192.168.99.100:80;
server 192.168.99.200:80;
}
server {
listen 80;
server_name localhost;
...
set $group "default"; #定义变量$group,默认值default
if ($remote_addr ~ "192.168.99.1"){ #如果客户机ip是99.1就访问集群1
set $group s8001;
}
if ($remote_addr ~ "192.168.99.2"){ #如果客户机ip是99.2就访问集群1
set $group s8002;
}
location / {
proxy_pass http://$group; #调用集群
root html;
index index.html index.htm;
}
...
}
web1:
vim /usr/local/nginx/conf/nginx.conf
http {
...
server {
listen 8001;
server_name localhost;
root html8001;
index index.html;
}
...
}
[root@web1 nginx]# mkdir html8001
[root@web1 nginx]# echo web1-8001 > html8001/index.html
web2:
vim /usr/local/nginx/conf/nginx.conf
http {
...
server {
listen 8002;
server_name localhost;
root html8002;
index index.html;
}
...
}
[root@web2 nginx]# mkdir html8002
[root@web2 nginx]# echo web1-8002 > html8002/index.html
vim /usr/local/nginx/conf/nginx.conf
http {
...
server {
listen 8001;
server_name localhost;
root html8001;
index index.html;
}
...
}
[root@web1 nginx]# mkdir html8001
[root@web1 nginx]# echo web1-8001 > html8001/index.html
web2:
vim /usr/local/nginx/conf/nginx.conf
http {
...
server {
listen 8002;
server_name localhost;
root html8002;
index index.html;
}
...
}
[root@web2 nginx]# mkdir html8002
[root@web2 nginx]# echo web1-8002 > html8002/index.html
2.不同用户ID测试灰度发布:
---PHP动静分离
vim conf/nginx.conf
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
vim /etc/php-fpm.d/www.conf
listen = 127.0.0.1:9000
或:
listen = /run/php-fpm/www.sock
---PHP动静分离
vim conf/nginx.conf
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
vim /etc/php-fpm.d/www.conf
listen = 127.0.0.1:9000
或:
listen = /run/php-fpm/www.sock
vim html/home.php #修改php页面,将原有Welcome那行修改成以下状态
Welcome : <?php
if(preg_match("/^abc/",$_SESSION['login_user'])) {
#preg_match匹配正则,如果登录账号是以abc开头,就连接99.100,否则连接99.200
echo "<a href='http://192.168.99.100'>开始</a>";
}
else
{
echo "<a href='http://192.168.99.200'>开始</a>";
}
?>
Welcome : <?php
if(preg_match("/^abc/",$_SESSION['login_user'])) {
#preg_match匹配正则,如果登录账号是以abc开头,就连接99.100,否则连接99.200
echo "<a href='http://192.168.99.100'>开始</a>";
}
else
{
echo "<a href='http://192.168.99.200'>开始</a>";
}
?>
访问限制
限流限速
1.定义limit_rate限制
vim /usr/local/nginx/conf/nginx.conf
http {
...
limit_rate 100k; #全局限速
server {
limit_rate 200k; #虚拟主机限速
listen 80;
server_name www.b.com;
root html;
index index.html;
location /file_a {
limit_rate 300k; #file_a目录限速300k
}
location /file_b {
limit_rate 0k; #file_b目录不限速
}
}
vim /usr/local/nginx/conf/nginx.conf
http {
...
limit_rate 100k; #全局限速
server {
limit_rate 200k; #虚拟主机限速
listen 80;
server_name www.b.com;
root html;
index index.html;
location /file_a {
limit_rate 300k; #file_a目录限速300k
}
location /file_b {
limit_rate 0k; #file_b目录不限速
}
}
2)创建测试目录
[root@web1 nginx]# mkdir html/file_a
[root@web1 nginx]# mkdir html/file_b
3)创建测试文件
[root@web1 nginx]# dd if=/dev/zero of=html/test.img bs=100M count=1
[root@web1 nginx]# dd if=/dev/zero of=html/file_a/test.img bs=100M count=1
[root@web1 nginx]# dd if=/dev/zero of=html/file_b/test.img bs=100M count=1
4)下载测试
wget www.b.com/file_a/test.img
wget www.b.com/file_b/test.img
5)连接限制
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
location /app {
limit_rate 30k;
limit_conn addr 1 ;
}
[root@web1 nginx]# mkdir html/file_a
[root@web1 nginx]# mkdir html/file_b
3)创建测试文件
[root@web1 nginx]# dd if=/dev/zero of=html/test.img bs=100M count=1
[root@web1 nginx]# dd if=/dev/zero of=html/file_a/test.img bs=100M count=1
[root@web1 nginx]# dd if=/dev/zero of=html/file_b/test.img bs=100M count=1
4)下载测试
wget www.b.com/file_a/test.img
wget www.b.com/file_b/test.img
5)连接限制
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
location /app {
limit_rate 30k;
limit_conn addr 1 ;
}
limit_conn_zone $binary_remote_addr zone=addr:10m;
$binary_remote_addr nginx内置变量,二进制的方式获得用户ip,并且以10m大小记录在addr文件中
limit_conn 连接限制
防盗链
valid_referers指令可以检测被访问资源从哪个地址来
1)修改配置,添加防盗链测试语句
[root@web1 nginx]# vim /usr/local/nginx/conf/nginx.conf
server {
...
valid_referers none 192.168.99.100; #如果请求中的referer 头字段包含者地址是99.100或者没有referer 头字段则有效,
if ($invalid_referer){ #如果上述测试无效则条件成立
return 403; #返回错误提示
}
...
}
2)web1编写测试页面
[root@web1 nginx]# cat html/index.html
web1
测试页面 --
<a href="http://192.168.99.100/nr.html">内容</a>
[root@web1 nginx]# cat html/nr.html
web1内容页面
3)web2编写测试页面
[root@web2 nginx]# cat html/index.html
web2
测试页面 --
<a href="http://192.168.99.100/nr.html">内容</a>
4)测试,从192.168.99.100主页点内容可以访问,但从99.200点不可以
1)修改配置,添加防盗链测试语句
[root@web1 nginx]# vim /usr/local/nginx/conf/nginx.conf
server {
...
valid_referers none 192.168.99.100; #如果请求中的referer 头字段包含者地址是99.100或者没有referer 头字段则有效,
if ($invalid_referer){ #如果上述测试无效则条件成立
return 403; #返回错误提示
}
...
}
2)web1编写测试页面
[root@web1 nginx]# cat html/index.html
web1
测试页面 --
<a href="http://192.168.99.100/nr.html">内容</a>
[root@web1 nginx]# cat html/nr.html
web1内容页面
3)web2编写测试页面
[root@web2 nginx]# cat html/index.html
web2
测试页面 --
<a href="http://192.168.99.100/nr.html">内容</a>
4)测试,从192.168.99.100主页点内容可以访问,但从99.200点不可以
0 条评论
下一页