首页
公共接口
每周Music
友链
更多
Armour
微软太空望远镜
国际空间站实时位置
Search
1
RouterOS配置OpenVPN客户端以及服务端
111 阅读
2
使用Nginx搭建一个远程打印机服务器
72 阅读
3
RB2011升级固件,RB2011刷机
66 阅读
4
记一次抓取PPPoE抓取账号密码
62 阅读
5
关于新栏目接口的说明
57 阅读
NAS
服务器
笔记记录
网络
全光网络
Armour
EVE-NG
Space
Nginx
登录
Search
draknightm
累计撰写
106
篇文章
累计收到
0
条评论
首页
栏目
NAS
服务器
笔记记录
网络
全光网络
Armour
EVE-NG
Space
Nginx
页面
公共接口
每周Music
友链
Armour
微软太空望远镜
国际空间站实时位置
搜索到
106
篇与
draknightm
的结果
2025-06-12
中兴OLT修改PON线卡模式
搞了个EPFC的线卡过来,发现U31网管上只能用MAC的方式认证,不能用loid认证,找半天每找到在哪里能改,同时网上的资料也比较少,后来我尝试看一下这个业务板的配置的时候,show run 然后我就发现了这个配置的关键词,是跟loid一样的 下面尝试一下下面的这个命令 ZXAN#conf t ZXAN(config)#epon ZXAN(config)#onu-? 这是下面支持的命令 有个onu-authentication-mode,接下来继续?问OLT 看到有个service,直接试试上面service / 然后就修改了模式 下面打开U31,看看是不是变成了loid模式
2025年06月12日
1 阅读
0 评论
0 点赞
2025-04-19
全光网络实机配置记录(真实配置)(下)
这篇是下半部分,主要就是配置的MA主柜的配置MA主柜设备图依然是从下到上倒数第一台为核心交换机。H3C_S6800,48x10G+4x40G倒数第二台为原先专线入口路由器,目前已停用倒数第三台为私网专用交换机,目前弃用倒数第四为新专线路由器且为SDN业务路由倒数第五为ACG网关,目前未使用倒数第六为业务机房核心交换机倒数第一个交换机配置(不显示前段)#配置VLAN 1(default), 2-7, 9-10, 14, 22, 28, 78, 81, 91, 111, 323, 330, 335, 833, 903, 1016 #配置下联交换机40G聚合 ----------- int Bridge-Aggregation 3 link-agg mode dyn quit int range ten 1/0/1 to ten 1/0/4 default port link-agg group 3 quit int Bridge-Aggregation 3 port link-type hybrid port hybrid vlan 4 10 28 81 91 111 833 1016 tagged port hybrid vlan 1 untagged quit #配置5号接口到总部 ----------- int ten 1/0/5 port link-ty hy port hybrid vlan 4 6 10 81 91 330 1016 tagged port hybrid vlan 1 untagged quit #配置20G端口到上联交换机 ----------- int Bridge-Aggregation 2 link-agg mode dyn quit int range ten 1/0/43 to ten 1/0/44 default port link-agg group 2 quit int Bridge-Aggregation 2 port link-ty hy port hy vlan 2 to 7 9 to 10 14 22 28 78 81 91 323 330 tagged port hybrid vlan 335 833 903 1016 tagged port hybrid vlan 1 untagged quit #配置到服务器的20G带宽 ----------- int range ten 1/0/33 to ten 1/0/34 default port link-ty hy port hy pvid vlan 1 port hy vlan 1 untag quit #配置VLAN 1 ----------- int vlan 1 ip add 172.16.83.208 22 undo shut quit #保存配置文件 ----------- save force 下面配置上层的机房业务交换机 #配置VLAN1(default), 2, 4-6, 10, 12, 14, 22, 28, 80-81, 91, 98, 323, 330, 833, 903, 1014-1017 #配置链路聚合到20G上联 ----------- int Bridge-Aggregation 2 link-agg mode dyn quit int range ten 1/0/51 to ten 1/0/52 default port link-agg group 2 quit int Bridge-Aggregation 2 port link-type hybrid port hybrid vlan 4 6 10 28 80 to 81 91 98 323 330 833 tagged port hybrid vlan 903 1016 tagged port hybrid vlan 1 untagged quit #配置专线路由器的链路聚合 ----------- int range gi 1/0/25 to gi 1/0/28 default int Bridge-Aggregation 3 description zhuanxian port link-type hybrid port hybrid vlan 28 98 330 833 903 tagged port hybrid vlan 1 untagged link-aggregation mode dynamic quit #配置IP-SAN的链路聚合 ----------- int range gi 1/0/33 to gi 1/0/36 default int Bridge-Aggregation 1 port link-ty acc port acc vlan 1016 link-agg mode dyn quit #配置VLAN 1 ----------- int vlan 1 ip add 172.16.83.206 22 undo shut #保存配置文件 ----------- save force配置MikroTik业务路由器#配置桥 ----------- /interface bridge add dhcp-snooping=yes name=URM1 #配置链路聚合为LACP ----------- /interface bonding add lacp-rate=1sec mode=802.3ad name=LAN-LACP slaves=\ ether8,ether7,ether6,ether5 #配置VLAN ----------- /interface vlan add interface=LAN-LACP name=VLAN1 vlan-id=1 add comment=TR069 interface=LAN-LACP name=VLAN28 vlan-id=28 add interface=LAN-LACP name=VLAN93 vlan-id=93 add comment=WLAN_URM1 interface=LAN-LACP name=VLAN330 vlan-id=330 add interface=LAN-LACP name=VLAN833 vlan-id=833 add comment=CONN interface=LAN-LACP name=VLAN903 vlan-id=903 #配置地址池 ----------- /ip pool add name=VLAN330 ranges=192.168.154.50-192.168.154.150 add name=TR069 ranges=10.18.1.0-10.18.5.255 #配置DHCP服务器 ----------- /ip dhcp-server add address-pool=VLAN330 interface=VLAN330 name=VLAN330 add address-pool=TR069 interface=VLAN28 name=TR069 #配置IP地址 ----------- /ip address add address=192.168.154.1/24 interface=VLAN330 network=192.168.154.0 add address=172.31.255.2/26 interface=VLAN903 network=172.31.255.0 add address=10.18.0.1/16 interface=VLAN28 network=10.18.0.0 add address=172.30.0.2/16 interface=VLAN833 network=172.30.0.0 #DHCP服务器的配置文件 ----------- /ip dhcp-server network add address=10.18.0.0/16 dns-server=10.18.0.250 gateway=10.18.0.1 netmask=16 add address=192.168.154.0/24 dns-server=218.4.4.4,218.2.2.2 gateway=\ 192.168.154.1 netmask=24 #配置DHCP服务器的DNS服务器 ----------- /ip dns set servers=218.4.4.4,218.2.2.2 #配置NAT以及MASQUERADE ----------- /ip firewall nat add action=masquerade chain=srcnat add action=src-nat chain=srcnat src-address=192.168.154.0/24 to-addresses=\ xxx.xxx.xxx.xxx #配置路由 ----------- /ip route add disabled=no dst-address=0.0.0.0/0 gateway=xxx.xxx.xxx.xxx routing-table=main \ suppress-hw-offload=no add disabled=no dst-address=172.16.80.0/22 gateway=172.31.255.3 routing-table=\ main suppress-hw-offload=no add disabled=no dst-address=10.16.0.0/16 gateway=172.31.255.3 routing-table=\ main suppress-hw-offload=no add disabled=no dst-address=192.168.212.0/24 gateway=172.31.255.3 \ routing-table=main suppress-hw-offload=no MA主柜配置完毕,实机配置请勿直接使用(并不能保证你的接法和我的接法是否是一致的,或者说你的设备硬件版本号与我的硬件版本号是否一致的)
2025年04月19日
10 阅读
0 评论
0 点赞
2025-04-19
全光网络实机配置记录(真实配置)(上)
本文是真实配置,全部以实机配置过程呈现,请勿直接应用于其他网络(实际情况可能会出现不一样的情况)本文出现机柜为MR-1和MP-1两个机柜(内部编号,请勿过度解读)以及MA-1核心柜(非主核心柜,请勿解读为主核心柜)MR和MP机柜MA核心柜配置MP机柜设备,MP机柜设备特写下方全光口交换机为H3C_S5552F,4x10G上联以及48x1G光口倒数第二个是AC控制器倒数第三个是备用AC,未启用倒数第四个是MP业务主交换,24口电+4x1G光口S5552F配置(不显示头部)#创建VLAN 1(default), 4-6, 10, 22, 28, 41, 81, 88, 111, 330, 380, 833, 1015-1017 #配置业务端口 #配置BAGG1 ---------- int Bridge-Aggregation 1 link-agg mode dyn quit int range ten 1/0/49 to ten 1/0/52 default port link-agg group 1 quit int Bridge-Aggregation 1 port link-type hybrid port hybrid vlan 4 10 28 81 111 330 833 1015 to 1017 tagged port hybrid vlan 1 untagged quit #配置BAGG2 ---------- int Bridge-Aggregation 2 link-agg mode dyn quit int range gi 1/0/1 to gi 1/0/4 default port link-agg group 2 quit int Bridge-Aggregation 2 description jigui1 port link-type hybrid port hybrid vlan 4 6 81 330 tagged port hybrid vlan 1 untagged quit #配置BAGG3 ---------- int Bridge-Aggregation 3 link-agg mode dyn quit int range gi 1/0/13 to gi 1/0/16 default port link-agg group 3 quit int Bridge-Aggregation 3 description jigui2 port link-type hybrid port hybrid vlan 111 tagged port hybrid vlan 1 untagged #配置BAGG4 ---------- int Bridge-Aggregation 4 link-agg mode dyn quit int range gi 1/0/25 to gi 1/0/28 default port link-agg group 4 quit int Bridge-Aggregation 4 description ZTE-OLT port link-type hybrid port hybrid vlan 4 6 10 28 41 111 330 833 1015 to 1016 tagged port hybrid vlan 1 untagged port hybrid pvid vlan 41 #配置VLAN 111 ----------- int vlan 111 ip add 192.168.111.1 24 quit #配置VLAN 1 ----------- int vlan 1 ip add 172.16.83.212 22 quit #保存配置文件 ----------- save force #H3C_S5552F配置完毕 -----------下面配置H3C_S5024PV5,MP机柜#本配置文件是MP机柜的配置文件 #创建VLAN 1 81 1016 330 #配置1-2是VLAN 81 ----------- int range gi 1/0/1 to gi 1/0/2 port link-ty acc port acc vlan 81 quit #配置上联口四个光口为聚合口 ----------- int Bridge-Aggregation 1 link-agg mode dyn quit int range gi 1/0/25 to gi 1/0/28 default port link-agg group 1 quit int Bridge-Aggregation 1 port link-ty hy port hy vlan 81 tag port hy vlan 330 tag port hy vlan 1016 tag port hy pvid 1 port hy vlan 1 untag quit #保存配置文件 ----------- save force #H3C_S5024PV5 MP机柜5024结束 -----------MR机柜配置5024PV5交换机#配置VLAN 111 1 330 1016 #配置上联口聚合 ----------- int Bridge-Aggregation 1 link-agg mode dyn quit int range gi 1/0/25 to gi 1/0/28 default port link-agg group 1 quit int Bridge-Aggregation 1 port link-ty hy port hy vlan 111 tag port hy vlan 330 tag port hy vlan 1016 tag #配置1-2接口到VLAN 111 ----------- int range gi 1/0/1 to gi 1/0/2 port link-ty acc port acc vlan 1 #配置完毕,下面保存配置 ----------- save force #H3C_S5024PV5 MR机柜5024结束配置MR机柜内的OLT,中兴C220#配置中兴OLT的上联板(中兴的不支持range) ----------- int smartgroup1 exit int gei_0/14/1 #中兴的LACP是配置主动还是被动的时候才生效 smartgroup 1 mode passive exit int gei_0/14/2 smartgroup 1 mode passive exit int gei_0/14/3 smartgroup 1 mode passive exit int gei_0/14/4 smartgroup 1 mode passive exit #配置业务VLAN放通 ----------- #先创建VLAN 1 4 10 28 111 330 int smartgroup1 sw mode hy sw vlan 1 tag sw vlan 4 tag sw vlan 10 tag sw vlan 28 tag sw vlan 111 tag sw vlan 330 tag end #保存配置 ----------- write #中兴的上联配置完毕要配置中兴的业务PON口需要看这篇文章 设置ONU的PON口
2025年04月19日
7 阅读
0 评论
0 点赞
2025-04-18
配置OLT顶端核心交换机
本篇是结尾,修改上层交换机并接入第一个摄像头配置上层H3C_S5552F交换机<H3C>sys [H3C]int vlan 111 [H3C-vlan-111]ip add 192.168.111.1 24 [H3C-vlan-111]quit #换成MikroTik配置静态路由 /ip route add disabled=no dst-address=192.168.111.0/24 gateway=172.16.83.212 routing-table=main suppress-hw-offload=no然后在电脑上ping 192.168.111.254(这个地址是NVR的地址) 这里显示正常跟踪那说明业务正常,下面在某个ONU上的LAN 1接口接上IPC并激活,设置地址为192.168.111.11,打开NVR的管理页面查看是否能正常添加到这里中兴OLT算配置完,后续会出新的使用方法
2025年04月18日
5 阅读
0 评论
0 点赞
2025-04-18
注册ONU并配置正常自动注册ITMS服务器
注册ONU前需要三样东西,DHCP服务器,ACS服务器以及OLT配置ONUDHCP服务器:这里使用的DHCP服务器是MikroTik的L009iUGS。创建VLAN 28 配置ip-pool 配置DHCP服务器 ACS服务器已在前面配置过,下面配置OLT,打开中兴U31网管添加完毕之后插上ONU,连接ONU的WLAN打开192.168.1.1/cu.html(cu.html的超级管理密码是CUAdmin)登录框下面就是设备注册,填入上面的epon002后就可以注册注册可能会出现卡界面的情况,因为没有配置自动下发,所以会出现卡在40%的情况,这里直接在地址框内输入192.168.1.1/cu.html后直接进入设置界面,里面的状态就是注册成功的状态(图我没截,我用epon004的ONU代替)现在到OLT上配置,这个ONU的接口是0/5/2:1ZXAN#conf t ZXAN(config)#int epon-onu_0/5/2:1 ZXAN(config-if)#sw mode hy ZXAN(config-if)#sw vlan 28 tag ZXAN(config-if)#sw vlan 111 tag ZXAN(config-if)#sw vlan 10 tag ZXAN(config-if)#sw vlan 4 tag 然后打开ITMS服务器,查看这个ONU是不是正常注册这里是正常注册了,下面填入需要的VLAN就演示两个VLAN,其他的配置方式相同
2025年04月18日
5 阅读
0 评论
0 点赞
2025-04-18
上联交换机配置TR069服务
这里需要先配置一下ONU口,我用的是5号线卡的2号PON口需要提前配置上联的VLAN,没有配置的看这个文章 配置上联的VLAN业务 依然是进入OLT配置,配置第一个ONU口(后期可以使用对接中兴OLT的ITMS可以实现自动配置),下面进入第一个ONU;VLAN后期都要ZXAN#conf t ZXAN(config)#int epon-onu_0/5/2:1 ZXAN(config-if)#sw mode hy ZXAN(config-if)#sw vlan 28 tag ZXAN(config-if)#end ZXAN#wr .......[OK] 下面配置TR069服务器,这里使用的是miaolink,这个免费的支持100个终端官网: TR069服务器官网 我直接装在了虚拟机上,因为这样方便配置Proxmox VE虚拟机,添加一个tag为28的网卡,这个就是业务网卡 再配置一个用来管理的网卡 下面安装过程省略,直接进入后台配置ACS服务器 下面的网卡10.18.0.250的是TR069服务器的地址,因为我用的ONU是上海联通的ONU,他们的TR069服务VLAN是28,然后服务器地址是10.18.0.250,这个根据情况而定,配置ACS服务器 保存后TR069业务就配置完了,下一部份就是注册ONU,下一篇再讲
2025年04月18日
5 阅读
0 评论
0 点赞
2025-04-18
中兴C220 OLT配置链路聚合与VLAN
中兴C220 OLT支持LACP,建议配置的时候配置成被动LACP,主动的可能无法正确聚合上本部分配置的VLAN业务:VLAN 111:监控视频VLAN 10: 常规无线网VLAN 4: 需要认证无线网VLAN 330:专线宽带VLAN 28: TR069注意:设置聚合最低需要EIGM业务板(4口C+2口F Combo)telnet 10.10.10.10 ZXAN#conf t ----------- (创建VLAN 111,4,10,330,28这里不放了) ----------- ZXAN(config)#int smartgroup1 ZXAN(config-if)#exit ZXAN(config)#int gei_0/14/1 ZXAN(config-if)#smartgroup 1 mode passive ZXAN(config-if)#exit ZXAN(config)#int gei_0/14/2 ZXAN(config-if)#smartgroup 1 mode passive ZXAN(config-if)#exit ----------- ZXAN(config)#int smartgroup1 ZXAN(config-if)#sw mode hy ZXAN(config-if)#sw vlan 111 tag ZXAN(config-if)#sw vlan 4 tag ZXAN(config-if)#sw vlan 10 tag ZXAN(config-if)#sw vlan 330 tag ZXAN(config-if)#sw vlan 28 tag ZXAN(config-if)#end ZXAN#write ......[OK] 下面到对端的交换机H3C_S5552F上配置LACP链路聚合<H3C>sys (创建和上面一致的VLAN) [H3C]int Bridge-Aggregation 1 [H3C-Bridge-Aggregation1]quit [H3C]int range gi 1/0/23 to gi 1/0/24 [H3C-if-range]port link-agg group 1 [H3C-if-range]quit [H3C]int Bridge-Aggregaiton 1 [H3C-Bridge-Aggregation1]link-agg mode dynamic [H3C-Bridge-Aggregation1]port link-ty hy [H3C-Bridge-Aggregation1]port hy vlan 10 tag [H3C-Bridge-Aggregation1]port hy vlan 4 tag [H3C-Bridge-Aggregation1]port hy vlan 111 tag [H3C-Bridge-Aggregation1]port hy vlan 330 tag [H3C-Bridge-Aggregation1]port hy vlan 28 tag ---------------- #录像机在gi 1/0/1和gi 1/0/2上 [H3C]int range gi 1/0/1 to gi 1/0/2 [H3C-if-range]port link-ty access [H3C-if-range]port acc vlan 111 [H3C-if-range]quit #TR069服务器和常用无线网,认证无线网在gi1/0/3上,专线在gi1/0/4上 [H3C]int gi 1/0/3 [H3C-GigabitEthernet1/0/3]port link-ty hy [H3C-GigabitEthernet1/0/3]port hy vlan 28 tag [H3C-GigabitEthernet1/0/3]port hy vlan 10 tag [H3C-GigabitEthernet1/0/3]port hy vlan 4 untag [H3C-GigabitEthernet1/0/3]port hy pvid vlan 4 [H3C-GigabitEthernet1/0/3]quit [H3C]int gi 1/0/4 [H3C-GigabitEthernet1/0/4]port link-ty acc [H3C-GigabitEthernet1/0/4]port acc vlan 330 [H3C-GigabitEthernet1/0/4]quit [H3C]save force放一下OLT链路聚合上的对端状态
2025年04月18日
3 阅读
0 评论
0 点赞
2025-04-18
中兴OLT连接到U31网管
这里配置的是中兴ZXAN10-C220 OLT,发布时间是2007年,最早支持10G EPON,所以暂时在部分场景下还是可以使用的。连接OLT上的Q网口(Console口也可以)设置电脑的网卡为10.10.10.250打开powershell输入telnet 10.10.10.10如果不能用就是需要安装telnet客户端插件(在控制面板安装)(中兴的命令是类思科的命令,和锐捷的操作方式差不多)中兴的U31网管主要就是用SNMP管理的OLT,所以只需要配置SNMPZXAN#conf t ZXAN(config)#snmp-server community publicro view allview ro ZXAN(config)#snmp-server community publicrw view allview rw ZXAN(config)#end ZXAN#write .......[OK]上面一定要用allview,其他的无法在U31上网管打开U31网管软件(需要U31网管支持OLT功能,新版的列表里面不支持OLT)新建有线网元 需要查看自己的OLT版本,不想查的话就一个一个测试,读写团体名就上面配置的 然后双击网元可以打开线卡
2025年04月18日
5 阅读
0 评论
0 点赞
2024-12-05
MariaDB 10.4后面的版本修改root允许登录的主机范围
UPDATE mysql.global_priv SET Host='%' WHERE User='root';
2024年12月05日
2 阅读
0 评论
0 点赞
2024-11-03
用两个树莓派2B做一个协议拦截服务
从闲鱼上收了20片开发板,其中两片是树莓派2B+,其余的分别是11片全志H3,7片全志A10,总共花了不到300块钱。从树莓派官网下载工具 ,这里跳转 下载 本环境使用的是Ubuntu 22.04,(因为只能装这个,其他的都装不了)-----省略部分内容首先需要安装软件#安装前需要删除apt锁定文件,不删除将无法安装下面的所有组件 #安装并启动Nginx服务 sudo apt-get install nginx sudo systemctl start nginx sudo systemctl enable nginx #ufw放行443和80端口用于 sudo ufw allow 80/tcp sudo ufw allow 443/tcp #创建Nginx需要使用的文件夹 cd /var/www/html sudo mkdir img static sudo mkdir -p static/js static/img Nginx服务的配置文件,需要更改的地方Nginx需要自己定义的部分 server { listen 80; listen 443 ssl; server_name _; #SSL配置部分,如果不需要则自动将上面的监听443端口注释或者删除 location / { index index.html; root /var/www/html; } } 下面开始配置DNS服务器 sudo snap install btop #下面是需要的部分端口,53是DNS服务器需要用到的端口 sudo ufw allow 53/tcp sudo ufw allow 53/udp sudo ufw allow 8080/tcp sudo ufw allow 3000/tcp 打开IP:端口去配置Adg的初始配置直接打开到 设置-DNS设置设置上游DNS服务器,这里推荐下面几个服务器 https://1.12.12.12/dns-query https://doh.pub/dns-query https://doh-pure.onedns.net/dns-query (不要设置国外的DoH服务器,因为设置了也不生效)然后勾选下面的并行请求,并行请求是找当前最快的DNS,因为要考虑到不同场景下的不同DNS服务器请求反应速度是不一样的,需要考虑到这一点,另外建议最好使用纯IP地址的DoH服务器,尽量不要使用域名访问的DoH DNS服务器然后下面设置几个后备DNS服务器的地址,也就是传统的IP地址DNS服务器 223.5.5.5 //alibaba 223.6.6.6 //alibaba 1.1.1.1 //Cloudflare 8.8.8.8 //Google.HK 8.8.4.4 //Google.HK.BAK 114.114.114.114 //114DNS 218.4.4.4 //ChinaNet.JS.SZ.MAN.163BK 218.2.2.2 //ChinaNet.JS.SZ.MAN.163BK.BAK 上面的是我设置的备用DNS服务器,这里需要酌情选择跳转网址: 国内DNS服务器 下面设置屏蔽规则具体的设置方法Adg的拦截使用方法 设置强制指定这个DNS服务器下面以RouterOS为设置对象#在DHCP服务器里面设置 /ip dhcp-server network add address=内网IP dns-server=DNS服务器 gateway=DNS服务器地址 netmask=掩码 #配置强制指定到本地的DNS服务器 #配置记得需要加一条特殊的 /ip firewall nat add action=redirect chain=dstnat comment=dns_UDP/MAIN_NET dst-port=53 protocol=udp src-address=\ !本地DNS服务器地址 to-ports=53 add action=redirect chain=dstnat comment=dns_TCP/MAIN_NET dst-port=53 protocol=tcp src-address=\ !本地DNS服务器地址 to-ports=53 注意,上面的感叹号不要删掉,这个感叹号是标记除了DNS服务器的IP地址,其他的IP地址请求DNS全部被重定向到路由器上,如果不加就是默认只重定向DNS服务器的DNS请求,如果不填这个地址,DNS服务器的缺省查找会出现查询失败的可能性配置路由器的DNS服务器 /ip dns set allow-remote-requests=yes cache-max-ttl=1d cache-size=8192KiB servers=本地DNS服务器地址,1.1.1.1,8.8.8.8 上面可以只填一个本地的DNS服务器,但是不能不填DNS。
2024年11月03日
3 阅读
0 评论
0 点赞
2024-07-17
利用ovpn隧道配合EoIP做透L2协议
首先是配置OpenVPN的链路,此处省略,并配置静态路由配置静态路由后,假设R1的IP地址是172.16.80.1,R2的IP地址是192.168.31.1这两端路由器都可以相互ping通,下面设置EoIP链路的信息R1的配置 /interface eoip add name=eoip-tunnel1 remote-address=192.168.31.1 tunnel-id=1 R2的配置 /interface eoip add name=eoip-tunnel1 remote-address=172.16.80.1 tunnel-id=1 简单讲解: EoIP配置相较简单,多数情况下是在内网内的L2协议透传使用较多,实际可以理解为 用L3协议去承载L2协议,MTU限制为1450,与传统的L2以太网有区别。识别链路隧道的编号使用的是Tunnel-id字段来识别,可隔离相互间的EoIP隧道。如果有VLAN则自动将EoIP链路的接口设置为tagged all,需要添加进bridge,该bridge下的所有VLAN与对端EoIP添加的bridge下相同的VLAN会通信,不同的默认不通
2024年07月17日
26 阅读
0 评论
0 点赞
2024-05-24
MikroTik封禁某个特定软件或者特定网站的服务并重定向到禁止的页面
很久没更新MikroTik的技术文章了,这次更新一个封禁网站以及特定软件服务的方法,HTTP与HTTPS两种协议均可以正常封禁并重定向,稍后放出方法。此方法需要配合一台HTTP服务器(理论上可以使用MikroTik自带的HTTP服务器),推荐使用Windows Server 2012及以上版本安装IIS 10.0(其他的也可以,IIS操作比较简单)前置配置:IIS服务器的IP地址为100.64.1.5DNS服务器:218.4.4.4,223.6.6.6,8.8.8.8MikroTik端的配置开启DNS缓存以及设置路由器端的DNS服务器 /ip dns set allow-remote-requests=yes cache-size=4096KiB servers=218.4.4.4,223.6.6.6,8.8.8.8 #开启DNS53端口挟持(注意这个非常重要) /ip firewall nat add action=redirect chain=dstnat comment=dns_UDP/MAIN_NET dst-port=53 protocol=udp to-ports=53 add action=redirect chain=dstnat comment=dns_TCP/MAIN_NET dst-port=53 protocol=tcp to-ports=53 #配置硬件加速(如果不是专用硬件区别不大) /ip firewall filter add action=fasttrack-connection chain=forward dst-port=53 hw-offload=yes protocol=tcp add action=fasttrack-connection chain=forward dst-port=53 hw-offload=yes protocol=udp 下面一步比较重要,需要封禁DoT服务,很多软件内置了DoT(Domain over TLS)不封禁可能会出现部分软件正常工作无法控制协议。 /ip firewall filter add action=drop chain=forward dst-port=853 protocol=tcp add action=drop chain=forward dst-port=853 protocol=udp到这里没有完,这里需要讲一下具体实现的原理,MikroTik里面有一个静态DNS,这个静态DNS可以是domain静态DNS也可以是regexp(正则表达式)静态DNS,说到这里大概都能想到一种原理就是用的SNI(Server Name Indication),TLS下的Relay Hello数据包,这里就带过一下不讲;DNS请求的53端口,数据包没有加密过,可以读取DNS数据包内请求的Domain,正则表达式是直接读取请求的Domain是否包含设置的regexp的字段,如果存在那就直接DNS Static解析到100.64.1.5这台服务器上,由这台服务器返回网页被封禁的页面。下面来着重讲一下如何获取regexp的值;例如:我需要封禁2345,到百度搜索一下2345这个公司所有的网站 你会发现他所有的域名都携带xxx.2345.xxx,那么这个公司的大部分服务就是2345这个为重点字段那我在MikroTik上配置Static DNS的条目 /ip dns static add address=100.64.1.5 regexp=2345 ttl=5s上面的ttl为生效时间,ttl=5s就是5秒后自动生效下面转到Windows Server的IIS上操作,安装IIS我就不演示了,因为默认安装的IIS就可以运行我需要的服务,不需要安装扩展的CGI下面我给一段封禁网页的HTML代码,并附上下载通道<head><title>网站已禁止访问</title></head> <img src=".\img\pic1.jpg" alt="给你个图片看看" /> <p>这个网站被我吃了,现在不允许打开</p>下载文件 创建一个站点,这里设置你的目录并设置一个连接的用户,不然文件IIS服务器没有权限去访问。 下面需要配置这个站点的IP地址以及端口,因为上面需要重定向到这个服务器上,不然是无法显示网站被禁止的页面,主机名不要填写,留空即可。 使用keymanager签发一个证书,然后导出成pfx格式,这个证书只是为了开启IIS监听443端口,没有实际使用的用途,然后到Windows Server上直接安装这个证书打开IIS的编辑绑定的设置页面 现在这个IIS的443端口被开启监听了,下一步操作就是设置这个站点的404页面,由于大部分请求网页肯定都是带URL请求的网页,如果在IIS上的话那肯定会报错404,要解决这个方法那就直接把404页面解决了就行,怎么解决呢,那就把上面的那个HTML文件设置成404页面啊 现在这个网站实际上是可以工作了,下面测试一下MikroTik的DNS挟持是不是正常工作,我这里试着请求一下2345的网站(使用nslookup)#不指定DNS服务器默认请求 ping www.2345.com #指定DNS服务器定向请求 nslookup www.2345.com 223.5.5.5查看结果 因为ipv6优先级比较高,因为没有配置ipv6的防火墙配置,所以实际上ipv6没限制,这里不能直接不指定DNS服务器nslookup,但是解决方法也很简单,这种方法原封不动在路由器ipv6 firewall上相同方法配置一下即可,区别相差不大。现在打开网页测试一下是不是被封禁了 测试一下带URL的网页 这个SSL证书显示不安全是因为这个证书是自签发证书,而且证书没有绑定任何域名;解释一下这个HTTPS拦截的原理,以及显示错误页的服务器为什么要设置HTTPS监听;第一点,现在多数网页都是用的HTTPS,如果被挟持到本地的服务器上必须要求本地服务器支持HTTPS协议以及对应的端口,IIS配置HTTPS主要就是开HTTPS的服务端口;第二点,HTTPS请求后对于服务器来讲是使用2345的域名直接去访问这个服务器上的资源,不需要解析HTTPS协议即可,也不需要使用SNI(实现比较复杂,也可以实现)Windows11支持DoH(Domain over HTTPS),想要封禁就直接在DNS Static里面填入DoH服务器的域名(因为DoH服务器也需要经过DNS请求获取到DoH服务器的IP地址),不能直接封禁,因为DoH使用的是443端口,封禁会造成其他网站无法正常访问常用的DoH服务器地址 点我跳转
2024年05月24日
44 阅读
0 评论
0 点赞
2023-09-18
封禁加密DNS协议的方法
DoTDoT协议使用的是TLS1.2 TCP 853端口,所以封禁该协议就通过防火墙禁止出站目标端口为853 TCP/UDPMikroTik RouterOS防火墙命令(RouterOS全系列通用) /ip firewall filter add action=drop chin=output dst-port=53 protocol=udp /ip firewall filter add action=drop chin=output dst-port=53 protocol=tcpDoHDoH的全称是DNS over HTTPS,看到HTTPS的意思就是,该协议使用443端口,也就是说这里不能使用上面的方法封禁;需要封禁就要开启DNS缓存和配置DNS挟持,这里有现成的文章DNS挟持 在静态DNS里面添加DoH的域名,让DNS over HTTPS的HTTPS无法实现(不需要封禁CDN)DoQ目前QUIC协议未定为标准,大多数QUIC协议的部署端口是UDP 443,所以这里暂定封禁方法为封禁UDP的443端口,目前大多数Web服务器都不支持QUIC协议,仅Caddy支持QUIC协议。但是在DoQ协议手册得知,DoQ协议端口可以是自定义端口,没有标明默认端口号;暂定无法彻底封禁在MikroTik上封禁DNS over QUIC /ip firewall filter add action=drop chin=output dst-port=443 protocol=udp这里请勿封禁443 TCP,如果封禁了所有网站将无法打开
2023年09月18日
24 阅读
0 评论
0 点赞
2023-09-08
RouterOS配置OpenVPN客户端以及服务端
MikroTik RouterOS配置服务端RouterOS版本7.10{card-describe title="卡片描述"}此处建议使用MikroTik官方的硬件,x86的设备没有Cloud功能,如果是专线固定IP地址则不需要考虑{/card-describe}创建CA证书system->Certificates点击+号下面是需要填写的参数参数名参数NameCACommon NameCASubject Alt. NameIP截图示意 然后到第二页Key Usage,勾上几个参数 点击右侧Apply,然后再点击sign,点击sign之后第一行选择刚才创建的证书,第二行留空,第三行填写路由器的IP地址,如下图所示 点击start开始签名创建服务端的证书参数如下参数名参数NameServerCommon NameServerSubject Alt. NameIPKey Usage选择下图几个参数 点击Apply,然后再点击SignSign页面选择如下 然后签名完了之后需要打开证书,勾选此项参数(Trusted参数) 创建客户端证书创建基本步骤如上基本一致,Key Usage参数仅需要勾选一个tls client 如图所示 点击右侧Apply,再点击Sign,签名方法与之前服务器证书方法一致签名后需要和服务端证书一样,需要勾选Trusted参数配置OpenVPN服务端配置前需要导出CA证书和Client客户端的证书双击证书,点击Export 客户端证书需要自己创建密码,导出后会生成三个文件,CA证书的crt文件,Client客户端的crt文件和Client客户端的key文件配置OpenVPN服务端参数PPP->Interface->OpenVPN Servertips:部分区域的BAS限制OpenVPN的1194端口,所以这里改成自定义端口(我这里使用的是9999端口)详细配置如下图所示,注意:这里的配置参数客户端要与这一致,否则客户端无法正常连接服务端 创建OpenVPN用户PPP->Secrt 自此处,服务端配置已完成,现在配置客户端在服务端那台路由器上的Files处下载客户端证书和密钥以及CA证书上传到OpenVPN客户端下的Files处,打开System->Certificates->Import导入CA证书以及客户端证书和客户端密钥(客户端证书和密钥需要分两次导入)导入CA证书(如果导出的时候上了密码需要填写密码,并且再导入CA的密钥文件) 导入客户端证书(如果导出的时候上了密码需要填写密码,并且导入客户端的密钥文件) 现在准备连接OpenVPN服务器创建OpenVPN Client接口 配置OpenVPN的连接信息,必须与之前的服务端参数一致(加密协议可以选择已使用的协议) 最后点击Apply(如果配置正确,点击Apply之后自动连接) 查看IP地址
2023年09月08日
111 阅读
0 评论
0 点赞
2023-09-02
使用MikroTik RouterOS做异地组网(SDN)
基于MikroTik RouterOS的软件定义网络
2023年09月02日
44 阅读
0 评论
0 点赞
2023-08-12
Cisco三层交换机配置DHCP服务器
声明:这里三层交换机上的DHCP服务器还是路由器上的DHCP服务器均适用此配置方法配置思科三层交换机的命令 Switch>en Switch#conf t Enter configuration commands, one per line. End with CNTL/Z. Switch(config)#ip dhcp pool test Switch(dhcp-config)#network 192.168.10.0 255.255.255.0 Switch(dhcp-config)#default-router 192.168.10.1 Switch(dhcp-config)#dns-server 8.8.8.8 Switch(dhcp-config)#exit Switch(config)#int vlan 1 Switch(config-if)#ip add 192.168.10.1 255.255.255.0 Switch(config-if)#no sh Switch(config-if)#end Switch#w配置三层交换机的过程(GIF) DHCP协议的工作流程,以及获取IP地址的数据包分析 Cisco pkt文件下载下载思科模拟器文件
2023年08月12日
28 阅读
0 评论
1 点赞
2023-07-05
ONU、ONT、ODN、OLT、OTN的区别
ONU、ONT这两个都属于用户端设备,ONT是ONU的一种,也包含在ONU内,ONT是光终端用户,应该说最后一端的上网设备;通俗一点就是用户不一定是通过ONU直接接入的,中间可能还有其他的方式传输例如FTTB(光纤到楼)。ONU是指光网络单元,一般可以指用户端例如FTTH(光纤到户);ONT是ONU的组成部分ODNODN是从OLT处到用户端ONU或者ONT之间的设备,这类设备属于物理无源设备(无源的意思就是不需要额外供电),最主要的设备是分光器,干线光缆组成。OLTOLT是光线路终端或称运营商局端设备,是用于接入承载网的重要设备;OLT可以批量管理下发用户端的ONU设备参数,以及对设备进行吞吐量限制,物理隔离开各个用户端;OTNOTN是光传送网,是一种波分复用技术为基础的下一代传送网技术。OTN的可扩容能力强,交叉容量可扩容到几十甚至上百Tbps的容量。支持异步映射,拥有SDH以及WDM两种技术的优点。ONU和OLT之间的区别ONU下挂在OLT的PON口下,一个PON口能接多个ONU用户端EPON 最大32个ONUXE-PON(10G EPON) 最大64个ONUGPON 实际数量未知XG-PON(10G GPON) 实际数量未知XGS-PON 目前未知(Tip2:GPON,XG-PON,XGS-PON三种协议可以共存)(Tip2:EPON,XE-PON协议可以共存)以当前最新的华为OLT为例XG-PON业务板,单PON口最大可开512户XG-PON以及256户GPON,共计768户(据现不可靠消息,目前华为OLT最新的OLT业务板,单PON口可开1024户XG-PON以及384户GPON,共计1408户单PON口)OLT和ONU之间的主要关系是,OLT可派发传单到ONU,ONU照着传单完成OLT的要求,从而实现用户功能。例:某地OLT下发用户PPPoE的VLAN ID是48,IPTV是110,VoIP是118,MPLS业务是122如果使用人工去人为的手动调整会大大增加维护成本,那么我们可以这样,通过在局端设备上设置模板,我只要从局端下发一个配置文件到ONU上自动设置参数就行,免去了手动配置的环节,大大提升了效率
2023年07月05日
38 阅读
0 评论
0 点赞
2023-06-22
各个国家5GHz频段支持情况
暂无简介
2023年06月22日
8 阅读
0 评论
0 点赞
2023-06-22
POE协议详解
POE协议分为,802.3af 802.3at 802.3bt(从供电功率小到大排序) 功率对应为:12.9Watt 30Watt 90Watt一般情况下PoE的实施条件为两端,这里以AB为例,A端为POE供电端(PSE;Power Sourcing Equipment);B端为POE受电设备(PD;PowerDevice)常见的PSE设备有:标准POE供电器、POE交换机、路由器POE交换板卡、带POE功能AC控制器、带POE功能NVR常见的PD设备有:POE供电无线AP、PoE中继器、标准POE分离器、POE监控摄像头、POE供电小型交换机、POE供电小型路由器等标准的超五类网线为八根线(四对双绞线)POE的工作过程(仅限标准POE规范或国标POE规范)供电前PSE设备检测对端设备,检测方法为用过一个低电压的电流去测试对端设备是不是支持标准POE当经过上方检测时,PSE设备将输出48v直流电到对端设备,在输出的过程中会逐渐提升功率等级,在提升功率的过程中,对端设备会返回一个功率等级给PSE设备,PSE设备在接受到功率等级后会自动调整功率限制对对端设备供电。如果设备没有回应功率等级,那么PSE仅输出最低等级功率给对端设备。如果PSE设备在第一步就没有检测到对端是PD设备,那么PSE设备将不会给PD设备供电,仅提供传输信号使用(针对标准PSE设备以及标准PD设备)PSE会实时检测对端设备端口,如果出现超载、短路等情况,PSE设备将会停止向PD设备供电,该端口进入保护模式标准PSE设备的直流输出电压在44-57v之间(一般为48v)工作分级为Class 0~3Class0设备需要的最高工作功率为0~12.95WattClass1设备需要的最高工作功率为0~3.84WattClass2设备需要的工作功率介于3.85W~6.49WattClass3设备的功率范围则介于6.5~12.95Watt802.3at协议输出电压缺省值为50v,最大工作功率为30Watt工作分级为Class4Class4设备可用功率为25.5Watt802.3bt协议输出电压缺省值为50v,最大工作功率为90Watt工作分级为Class5~8Class5设备可用功率为40WattClass6设备可用功率为51WattClass7设备可用功率为62WattClass8设备可用功率为71Watt802.3BT汇总表 Tips:从上表可知,802.3BT向下兼容802.3AF以及802.3AT标准协议设备支持POE协议的网线(没错,对应的协议还需要网线的支持)
2023年06月22日
9 阅读
0 评论
0 点赞
2023-06-20
PHP:/usr/bin/env: php: No such file or directory
遇到类似问题,例如:/usr/bin/env: php: No such file or directory找不到 php 的执行文件,原因是脚本文件 env 会通过 $PATH 所指定的路径去寻找 php 的可执行文件解决方法首先寻找php可执行文件存放的位置 find / -name php 然后通过查找出的文件绝对位置/绝对位置/php -v如果有返回PHP版本,那么就是这个PHP可执行文件存放的位置创建软连接,用于对应CLI直接输入php -v获取PHP版本信息ln -s /绝对路径/php /usr/local/bin/php测试php -v如果返回的是PHP版本,那么这个操作就对了
2023年06月20日
10 阅读
0 评论
0 点赞
2023-06-13
Nginx不能正常反向代理目标网站
很多情况下会遇到反向代理目标网站,由于目标网站的设置,反向代理不成功,需要在配置文件中间写入以下参数设置自定义Host以及传递真实客户端IP地址到服务器Nginx的虚拟服务器功能是通过虚拟主机的Host名称区分网站与服务的,所以会将网站与虚拟Host进行绑定,通过请求的Host区分访问的是哪个网站,当反向代理的站点不设置自定义Host,那么这个Nginx服务器反向代理的时候是传递的客户端请求反向代理服务器的Host到被反向代理的网站;又因为被反向代理的服务器没有这个主机名,所以会造成网站无法正常访问;因此需要在Nginx内设置一个自定义Host,在访问到这个反向代理的Nginx虚拟服务器时,会把传递到被代理网站的Host名称改为自定义的Host名称,从而实现不同虚拟主机名访问同一个网站Nginx还有一个重要的参数就是请求IP地址,当服务器不传递客户端真实IP地址时,那么所有的客户端请求反向代理的服务器时,对于被代理网站来讲,所有客户端请求的IP地址都为反向代理服务器的IP地址,不为客户端IP地址;假设服务器设置单IP地址访问数量限制时,反向代理服务器在高并发访问的情况下被代理网站服务器限制访问,或者禁用访问权限,导致反向代理服务器无法正常访问。配置文件写法 server { listen 80; server_name virtual_machine_name; location / { proxy_pass proxy_web_pass; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host proxy_virtual_name; } }
2023年06月13日
18 阅读
0 评论
0 点赞
2023-06-13
常用DNS服务器与DNS安全
栏目一:常规DNS服务器地址格式:主DNS,备DNS国内 ipv4 DNS阿里云DNS服务器 223.5.5.5,223.6.6.6腾讯云DNS服务器 119.29.29.29,182.254.116.116清华大学公共DNS服务器 101.6.6.6CNNIC(中国国家互联网中心) 1.2.4.8,210.2.4.8百度云DNS 180.76.76.76江苏电信DNS 218.4.4.4,218.2.2.2国内 ipv6 DNS阿里云DNS服务器 2400:3200::1,2400:3200:baba::1腾讯云DNS服务器 2402:4e00::清华大学公共DNS服务器 2001:da8::666CNNIC(中国国家互联网中心) 2001:dc7:1000::1百度云DNS 2400:da00::6666中国电信DNS 240e:4c:4008::1中国移动DNS 2409:8088::a,2409:8088::b国外 DNS服务器格式:主ipv4,备ipv4 | 主ipv6,备ipv6CloudFlare DNS服务器 1.1.1.1,1.0.0.1 | 2606:4700:4700::1111,2606:4700:4700::1001Google DNS服务器 8.8.8.8,8.8.4.4 | 2001:4860:4860::8888,2001:4860:4860::8844IBM Quad9 DNS服务器 9.9.9.9,149.112.112.112 | 2620:fe::fe,2620:fe::9Cisco OpenDNS 服务器 208.67.222.222,208.67.220.220 | 2620:119:35::35,2620:119:53::53AdGuard DNS服务器 94.140.14.14,94.140.15.15 | 2a10:50c0::ad1:ff,2a10:50c0::ad2:ff栏目二:加密DNS服务器国内 加密DNS服务器格式:DoH服务器 || DoT服务器1.阿里云加密DNS服务器 https://dns.alidns.com/dns-query || dns.alidns.com2.腾讯云加密DNS服务器 https://doh.pub/dns-query || dot.pub3.360加密DNS服务器 https://doh.360.cn || dot.360.cn4.清华大学加密DNS服务器 https://101.6.6.6:8443/dns-query国外 加密DNS服务器格式:DoH服务器 || DoT服务器Google 加密DNS服务器 https://dns.google/dns-query || dns.googleCloudFlare 加密DNS服务器1 https://cloudflare-dns.com/dns-query || 1dot1dot1dot1.cloudflare-dns.comCloudFlare 加密DNS服务器2 https://1.1.1.1/dns-query || one.one.one.oneCloudFlare 加密DNS服务器3 https://1.0.0.1/dns-queryIBM Quad9 加密DNS服务器 https://dns.quad9.net/dns-query || dns.quad9.netCisco OpenDNS 服务器 https://doh.opendns.com/dns-queryCisco OpenDNS 家庭版DNS服务器 https://doh.familyshield.opendns.com/dns-query老版本的DNS服务器可以直接使用扩展ACL,或防火墙iptables,firewalld屏蔽对应服务器53端口加密DNS服务器可使用DNS污染的方式或者DNS强制挟持的方式阻止使用可用方法跳转链接: https://dkm.draknightm.top/index.php/archives/107/
2023年06月13日
21 阅读
0 评论
0 点赞
2023-04-23
在Oracle Linux9上安装LNMP
Oracle Linux现在是CentOS的唯一替代者,也是唯一一个能确实对标CentOS的一款RHEL发行版。本人网站集群组近期已经将多台服务器更新至Oracle Linux 9.1,故将Oracle Linux 9下LNMP的配置过程写出。预先环境准备:需要安装的软件:PHP7.4 MariaDB10.5 Nginx1.20目前数据库建议全部用MariaDB,不建议MySQL;配置PHP安装需要的部分源: yum -y install https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-9.rpm yum -y install epel-release yum makecache直接安装PHP7.4和对应的部分组件,并启动服务 dnf -y install gcc gcc-c++ dnf -y install php74 dnf -y install php php-curl php-gd php-intl php-json php-ldap php-mbstring php-mysqlnd php-xml php-zip php-opcache systemctl start php-fpm systemctl enable php-fpm 安装MariaDB dnf -y install mariadb-server systemctl start mariadb && systemctl enable mariadb #初始化数据库 mysql_secure_installation <-----参数全部默认 #创建需要的数据库 mysql -uroot MariaDB> CREATE DATABASE <your database name> CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; MariaDB> GRANT ALL ON <your database name>.* TO 'ueser_name'@'<server id>' IDENTIFIED BY '<your password>'; MariaDB> SHOW DATABSES; MariaDB> EXIT;安装Nginx这里安装Nginx只需要Oracle Linux自带的epel源即可 dnf -y install nginx systemctl start nginx && systemctl enable nginx #PHP扩展其实已经在Nginx里面配置好了,在Nginx的配置文件路径是 /etc/nginx/conf.d/php-fpm.conf #默认的PHP pass是http://php-fpm 防火墙放行一些端口 firewall-cmd --add-port=8080/tcp --zone=public --permanent firewall-cmd --add-port=8443/ycp --zone=public --permanent firewall-cmd --reload关闭SELinux cd /etc/selinux nano config #将中间enc开头的参数改成disable,Ctrl+O 回车保存 Ctrl+X退出 #重启 rebootOracle Linux 9下面的LNMP配置结束
2023年04月23日
12 阅读
0 评论
0 点赞
2023-04-19
自己封装ESXI的驱动
难得写了一个关于ESXI的文章,我个人是用Proxmox VE的,只是在TG群里看见有人问ESXI有没有打包好驱动的ESXI镜像文件,有人直接在群里要价100块钱发镜像文件,我看的很不爽;看了一眼官方的文档,大致知道了ESXI是怎么打包驱动的。本文讲的是如何打包驱动到ESXI 8.0,所以需要VMware-PowerCLI-13,其他的版本在打包的时候会报错,所以这里提供PowerCLI-13的下载地址-> VMware-PowerCLI-13.0.0下载链接 <-下载完了之后解压到C:Programe FilesWindowsPowerShellModules 需要管理员身份解压到那管理员身份打开PowerShell #输入下面的参数以加载PowerShell库 Set-ExecutionPolicy RemoteSigned Import-Module VMware.PowerCLI Set-PowerCLIConfiguration -Scope AllUsers -ParticipateInCeip $false -InvalidCertificateAction Ignore输完之后关闭PowerShell安装Python 3.7.9Python 3.7.9下载地址-> 下载Python-3.7.9 For Windows <-安装Python3.7.9之后打开PowerShell,输入Python查看是否安装成功 关闭PowerShell因为PowerShell只有在重新加载的时候才会加载已安装的库文件再次重新打开PowerShell(管理员)这次下载ESXI的打包工具->ESXI打包脚本<- 解压GitHub上下载的ESXI打包脚本到任意目录;我这里解压到D盘ESXI下(E:/ESXI)在PowerShell中间指定Python的路径 #书名号里面的内容改成你的用户名 Set-PowerCLIConfiguration -PythonPath C:\Users\《你的用户名》\AppData\Local\Programs\Python\Python37\python.exe -Scope User 再次打开PowerShell(管理员) cd D:\ESXI #下载ESXI文件包,v80表示的是ESXI8.0的意思 .\ESXi-Customizer-PS.ps1 -v80 -ozip -outDir .\ 下载之后不要解压,复制到D:ESXI内,在ESXI内创建drivers文件夹(可以自定义,自定义需要修改下面的参数)关闭PowerShell打开驱动网站 ->驱动网站<- 找到NIC驱动 找到你要的驱动,点进去之后滚到最下面 点击第二个,第二个下载的压缩包内有我们需要的二进制文件解压到存放的drivers文件夹内(务必细化分开,即一个驱动一个文件夹)再次打开PowerShell(管理员),输入下面的命令 #进入ESXI的打包文件所在地 cd D:\ESXI #drivers文件夹的位置需要相对路径,outdir .\的意思就是在本文件夹内生成iso #-izip的意思就是导入zip压缩文件 -pkgdir的意思就是指定驱动目录 .\ESXi-Customizer-PS.ps1 -v80 -izip .\ESXi-8.0sb-21203431-standard.zip -pkgDir .\drivers\ -outDir .\ 下面只需要静静等待打包完成(END)
2023年04月19日
48 阅读
0 评论
0 点赞
2023-04-02
关于新栏目接口的说明
新栏目接口主要提供地区IP地址库接口为主,其他工具接口为辅;新版块接口代码不开源,获取方式不开源,目前没有接口调用次数限制,可在法律允许范围内使用;本接口不收取任何费用以及接口调用权限,故本接口不保证高并发量下的可持续服务性,望悉知!接口地址: 跳转
2023年04月02日
57 阅读
0 评论
0 点赞
2023-04-01
Windows共享打印机报错0x00000709解决方法
2021年九月份的一个Windows更新KB5005565补丁和固化补丁KB5006667导致的问题,此问题无法通过其他手段解决,固化之后这个补丁均不可卸载,目前可解决的方法有多种,但不包含卸载补丁更新和重启打印机服务的操作,这两种方法均无效;解决方式一:客户端与服务器都更新最新的Windows版本,以解决此类报错;或者服务器与客户机降级Windows版本,不更新补丁;本补丁需要双端都存在或者双端都不存在。解决方式二:降级补丁,通过脚本降级Windows已更新的补丁包,这里我放出一个用于降级补丁包的文件;本文件为未更新补丁包系统内获取,非篡改文件,悉知,谢谢~文件截图 使用方法为管理员身份启动脚本,并且dll文件存在的情况下以倒退补丁注意:服务端和客户端都必须运行一次这个脚本,如果你不知道是那一端的问题,那就客户端和服务端都安装一次(Windows10以下版本不需要倒退版本)文件下载地址:备注:修复专业工作站版使用专业版修复
2023年04月01日
10 阅读
0 评论
0 点赞
2023-02-27
记一次抓取PPPoE抓取账号密码
常见的PPPoE链路认证的上传数据包参数是不经过加密的,可以通过Wireshark抓包获得。需要准备的环境:MikroTik VMware虚拟机版(本文来源:ROSABC.com)下载以及Wireshark抓包软件抓包前需要开启PPPoE服务器,不开启PPPoE客户端无法通过PPPoE发现(LCP),无法抓包,原因是因为公司要换路由器,之前的路由器不是我配置的,公司也没有路由器管理密码,密码别人设置的,目前只能通过这种手段自己抓取参数MikroTik开启PPPoE服务器: /interface pppoe-server server add authentication=pap disabled=no interface=ether1 service-name=test-server #配置PPPoE服务器配置完成之后把需要抓取PPPoE数据包的路由器WAN接到你开虚拟机的电脑上,打开Wireshark软件,选择以太网,准备抓取PPPoE参数给路由器通电,将Wireshark的筛选栏目填入ppp参数抓取结果
2023年02月27日
62 阅读
0 评论
0 点赞
2023-02-26
MikroTik配置DNS挟持
MikroTik配置DNS挟持不需要借助其他的插件就可做到挟持功能,在配置前需要自行了解一下iptables的功能。配置MikroTik的防火墙挟持(本地网络访问53端口的请求全部挟持到本地) /ip firewall nat add action=masquerade chain=srcnat disabled=no add action=redirect chain=dstnat comment=dns_TCP disabled=no dst-port=53 \ protocol=tcp to-ports=53 add action=redirect chain=dstnat comment=dns_TCP disabled=no dst-port=53 \ protocol=udp to-ports=53 #上方为强制挟持流量到本机的53端口,并配置NAT上网 /ip firewall filter add chain=forward protocol=tcp dst-port=53 action=fasttrack-connection /ip firewall filter add chain=forward protocol=udp dst-port=53 action=fasttrack-connection #上方命令需要用MikroTik 6.x以上版本使用,ROS 5.x版本无法使用;作用是配置Fasttrack绕过队列。 配置完之后开启DNS服务 /ip dns set allow-remote-requests=yes cache-max-ttl=1w cache-size=2048KiB \ max-udp-packet-size=4096 servers=\ 223.5.5.5,223.6.6.6,8.8.8.8,8.8.4.4,1.1.1.1,1.0.0.1 #开启DNS服务器并配置DNS服务器缓存,设置缓存大小 配置需要屏蔽的域名 在客户机上测试DNS是不是被污染了 批注,如果使用了360安全浏览器无法屏蔽,360安全浏览器会使用内置DoH服务器去请求正确的服务器地址;固需要在DNS static里面屏蔽360doh和360dot的域名,污染DoH。(DNS on HTTPS)常用的DoH、DoT服务器地址DoH-DoT服务器地址
2023年02月26日
43 阅读
0 评论
0 点赞
2023-01-11
终章-使用Nginx搭建一个CDN服务
本文为本系列最后一篇文章,本文章重点讲Nginx一个最重要的功能,即CDN服务器功能;目前国际大厂,Amazon,Azure,CloudFlare,Akamain以及国内的大部分CDN服务商均使用将Nginx变成CDN服务之前,首先配置缓存目录,缓存位置最好放在速度比较快的硬盘里面,建议放速度快的硬盘,因为缓存是频繁调用的。配置缓存目录 #创建目录 mkdir -p /data/nginx-cdn-cache mkdir -p /data/nginx-cache #配置文件目录权限 chmod 777 /data/nginx-cdn-cache chmod 777 /data/nginx-cache #配置Nginx配置文件 nano /etc/nginx/nginx.conf #在配置文件内引入参数 http{ proxy_temp_path /data/nginx-cache; proxy_cache_path /data/nginx-cdn-cache levels=1:2 keys_zone=cache_one:50m inactive=1d max_size=1g; proxy_connect_timeout 5; proxy_read_timeout 60; proxy_send_timeout 5; proxy_buffer_size 16k; proxy_buffers 4 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_404; } #注意这个是引入到http块里面的,不要填错地方 #一开始的目录是必须要创建的,不创建无法正常正常使用下面写用于清除缓存的脚本,也可以用用C代码写一个服务,C代码我就不讲了,这里我就用bash脚本 nano /etc/nginx/clean-cdn-cache.sh chmod a+x clean-cdn-cache.sh #/bin/bash cd /data sudo rm -rf nginx-cache/* && sudo rm -rf nginx-cdn-cache/* cd 上面的脚本可以清除文件下面将脚本封装成命令 cp clean-cdn-cache.sh /usr/bin/nginx-clean sudo chmod 755 /usr/bin/nginx-clean #修改完了之后使用nginx-clean即可执行清除CDN缓存下面开始编写Nginx的网站配置文件 #upstream参数,因为是CDN服务器,这个upstream是标记源服务器的参数块,一般直接填写服务器IP地址 upstream cdn_web_1 { server 172.16.21.37:80; } #server参数,用于缓存参数 server { listen 80; server_name www.nginx.test; #缓存静态文件 location ~ .*\.(gif|jpg|png|html|htm|css|js|ico|swf|pdf|jpeg|mp4)$ { proxy_redirect off; proxy_next_upstream http_502 http_504 http_404 error timeout invalid_header; proxy_set_header Host $host; proxy_set_header X-real-ip $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #配置源站参数 proxy_pass http://cdn_web_1; proxy_cache cache_one; #传回请求参数 proxy_cache_key "$host$request_uri"; add_header Cache "$upstream_cache_status"; #HTTP返回错误状态 proxy_cache_valid 200 304 301 302 8h; proxy_cache_valid 404 1m; #缓存在CDN有效时间,可以自定义,常见CDN运营商使用的为5小时左右 proxy_cache_valid any 1d; } location / { proxy_redirect off; #设置超时错误 proxy_next_upstream http_502 http_504 http_404 error timeout invalid_header; proxy_set_header Host $host; proxy_set_header X-real-ip $remote_addr; #向服务端返回客户端IP地址 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #配置源站参数 proxy_pass http://cdn_web_1; client_max_body_size 40m; client_body_buffer_size 128k; #连接超时时间 proxy_connect_timeout 60; #发送超时时间 proxy_send_timeout 60; #读取超时时间 proxy_read_timeout 60; proxy_buffer_size 64k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; } }
2023年01月11日
10 阅读
0 评论
0 点赞
2023-01-09
为什么要用Nginx
学到现在,很多人都会问的一个问题,为什么要用Nginx,为什么不去用其他例如Caddy,Tomcat,Apache等HTTP服务器呢?其实吧,这是个好问题,如果用上面的观点去看Nginx的话,Nginx就只有HTTP服务器的功能,而且非常容易被Tomcat,Apache等HTTP服务器替代,另外Tomcat还是一款自带运行环境的架构。解释上面提出的问题,需要如下几点来回答第一点,服务器的应用Nginx是一个使用C语言开发的高性能HTTP服务器,反向代理服务器,TCP/UDP端口转发服务器;官方测试过Nginx能持续提供5万多并发连接,消耗的CPU,内存资源很少,并且运行可靠性很高。在作为HTTP服务器时,Nginx可以做静态网页服务器或者搭配FastCGI(例如PHP,Python,Go)做动态交互式网页;并做前端网页文件和后端服务文件的分离操作、目录绑定、目录加密、甚至是将Nginx服务器作为文件服务器(WebDav)。在很多时候,一台服务器可能需要部署多个网站,在使用的时候需要对网站进行隔离,常用的方法是通过使用不通端口访问不同的网站,那就会出现一种问题,除了80端口浏览器打开可以直接访问,其他的端口需要在访问的域名或者IP地址后面加上:[port]的形式访问网站,而对于Nginx来说可以不需要这种操作,Nginx可以在server参数中间指定server_name参数创建一个网站空间,再指定网站的目录位置,在访问网站的时候会带上请求的域名参数,到Nginx服务器上会比较域名参数,通过检索Nginx的配置文件参数内是否包含该域名,如果存在该域名则默认请求绑定该域名的网站,不存在则返回默认页面。在使用Nginx的时候会遇到不知名的攻击者针对服务器的攻击,一般情况下网站会使用CDN来保护源网站,并通过CDN加速网站的打开速度,如果没有正确配置Nginx的配置文件,那么会出现源站地址泄露或者攻击者访问到源站服务器,并针对源站服务器进行攻击,在配置Nginx的时候需要配置一个默认页,在直接通过IP访问网站的时候返回403或者直接返回502。Nginx最主要也是最重要的功能就是反向代理,负载均衡;当某个公司的业务量增大,那么该公司的网站服务器就会出现大量的访问,如果服务器数量较少,则可能会出现访问该公司网站速度过慢,或者该公司网站打不开甚至是服务器崩溃;在这种情况下会使用到Nginx的负载集群方式来增加网站的负载能力,和网站的响应速度,所有请求网站用户的连接数会被Nginx平均负载,在某台服务器掉线的情况下不影响公司网站的正常运营,将故障服务器从集群中间去除,或者标记down。Nginx反向代理是通过反向访问其他的网页,但是有人会有疑问了,都反向代理其他的网站服务器了,为什么不直接使用其他的网站服务器,偏要去使用反向代理服务器呢?这个原因很简单,假设一个网站使用到了Python编写的动态语句,那么直接使用这个服务器上的Python引擎会出现一种情况,就是网站一般分静态资源和动态指令,如果直接让引擎接管全部操作的话,可能会出现源服务器需要实时回应静态资源或者是实时生成静态资源,会造成引擎产生大量的不必要连接数和不必要的性能浪费,那么就可以使用Nginx的反向代理缓存,缓存网站的静态资源,在用户访问网站的时候Nginx会直接缓存保存在缓存目录的静态资源文件,在用户进行动态操作的时候(例如查询信息)再将动态操作反馈到Python编写的服务器引擎,如果遇到没有缓存过的静态资源文件则再次向源Python请求保存的缓存文件,并缓存到Nginx的缓存目录;使用这种方法从而降低源服务器的性能浪费以及源服务器的资源消耗,并且Nginx支持极高的并发连接数,配合Nginx的负载集群(upstram)可以实现服务的高可用。第二点,其他类型HTTP服务器的优缺点Apache优点: 几乎可以运行在所有的通用计算机上,使用的是静态解析文件的方法,可以通过扩展脚本的方式支持动态页面 缺点: 配置复杂,服务以进程结构为基础,消耗系统硬件资源比较高,所以在高并发连接的时候系统需要消耗大量资源 Lighttpd优点: 比Apache轻量,服务器资源消耗较少,支持高并发 缺点: 稳定性和Apache Nginx相比较相差较远,支持的功能较少,并且代码的缺陷多 Caddy优点: 使用GoLang开发,Windows和Linux平台都可以使用,需要安装Go语言环境,自动支持HTTPS,使用简单 缺点: 由于Caddy使用的Go开发,所以Caddy的处理性能就是Go的处理性能 IIS优点: 使用简单,方便,支持多种动态语言 缺点: 无Linux平台版本,Linux平台只能用Docker版IIS,并且Linux版仅支持ASP.NET Core,标准版.NET Framework 5.0以下无法支持 第二点,支持并发量高<网上摘录部分>Nginx 服务器,正常运行过程中:多进程:一个 Master 进程、多个 Worker 进程。Master 进程:管理 Worker 进程。对外接口:接收外部的操作(信号);对内转发:根据外部的操作的不同,通过信号管理 Worker;监控:监控 Worker 进程的运行状态,Worker 进程异常终止后,自动重启 Worker 进程。Worker 进程:所有 Worker 进程都是平等的。实际处理:网络请求,由 Worker 进程处理。Worker 进程数量:在 nginx.conf 中配置,一般设置为核心数,充分利用 CPU 资源,同时,避免进程数量过多,避免进程竞争 CPU 资源,增加上下文切换的损耗。HTTP 连接建立和请求处理过程如下:Nginx 启动时,Master 进程,加载配置文件。Master 进程,初始化监听的 Socket。Master 进程,Fork 出多个 Worker 进程。Worker 进程,竞争新的连接,获胜方通过三次握手,建立 Socket 连接,并处理请求。Nginx 高性能、高并发Nginx 为什么拥有高性能并且能够支撑高并发?Nginx 采用多进程+异步非阻塞方式(IO 多路复用 Epoll)。请求的完整过程:建立连接→读取请求→解析请求→处理请求→响应请求。请求的完整过程对应到底层就是:读写 Socket 事件。Nginx 的事件处理模型Request:Nginx 中 HTTP 请求。基本的 HTTP Web Server 工作模式:接收请求:逐行读取请求行和请求头,判断段有请求体后,读取请求体。处理请求。返回响应:根据处理结果,生成相应的 HTTP 请求(响应行、响应头、响应体)。Nginx 也是这个套路,整体流程一致:Nginx 的模块根据其功能基本上可以分为以下几种类型:①event module:搭建了独立于操作系统的事件处理机制的框架,及提供了各具体事件的处理。包括 ngx_events_module,ngx_event_core_module 和 ngx_epoll_module 等。Nginx 具体使用何种事件处理模块,这依赖于具体的操作系统和编译选项。②phase handler:此类型的模块也被直接称为 handler 模块。主要负责处理客户端请求并产生待响应内容,比如 ngx_http_static_module 模块,负责客户端的静态页面请求处理并将对应的磁盘文件准备为响应内容输出。③output filter:也称为 filter 模块,主要是负责对输出的内容进行处理,可以对输出进行修改。例如,可以实现对输出的所有 html 页面增加预定义的 footbar 一类的工作,或者对输出的图片的 URL 进行替换之类的工作。④upstream:upstream 模块实现反向代理的功能,将真正的请求转发到后端服务器上,并从后端服务器上读取响应,发回客户端。upstream 模块是一种特殊的 handler,只不过响应内容不是真正由自己产生的,而是从后端服务器上读取的。⑤load-balancer:负载均衡模块,实现特定的算法,在众多的后端服务器中,选择一个服务器出来作为某个请求的转发服务器。摘录链接链接:https://www.jianshu.com/p/74aededc3457来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。第三点,使用难度较低
2023年01月09日
10 阅读
0 评论
0 点赞
2023-01-08
Nginx配置文件参数部分详解
因为Nginx的配置文件配置参数有很多,本篇文章只能粗略的放出部分配置参数文件Nginx主配置文件详解Nginx主配置文件默认位置为/etc/nginx/nginx.conf一般情况下默认编译的位置在上面的路径内,非刻意修改位置路径不变(修改方法为编译的时候设定编译位置)主配置文件结构#全局块 worker_processes 1; #events块 events { worker_connections 1024; } #http块 http { #http全局块 upstream { #upstream块 } server { #server块(网站配置文件块) location / { #location块 } } } stream { #stream块 upstream { #upstream块 } }上面配置文件的解读全局块全局块通常配置Nginx运行用户或者用户组,Nginx的进程和PID存放位置,日志的存放位置events块一般情况下能限制多worker process接收多个网络连接,这部分一般不做设置,任何配置问题可能会影响到Nginx的服务器整体性能,一般由服务器默认设置即刻。http块http块是Nginx配置文件中间最重要的部分,整个Nginx下面的http服务都在http块下面;http块下面可以包括http全局块,用于启用插件,引用外部文件;本区域server块可以通过include引用当前目录下conf.d目录下的参数配置文件,引用的语法为 include /etc/nginx/conf.d/*.conf ,意思为引用conf.d目录下面的所有以.conf为后缀的文件;http块内不能包含stream块,stream块与http块同级。http块配置参数http{#文件扩展名与文件类型映射表 include mime.types; #默认文件类型 default_type application/octet-stream; #默认编码 charset utf-8; #此选项允许或禁止使用socke的TCP_CORK的选项,此选项仅在使用sendfile的时候使用 tcp_nopush on; tcp_nodelay on; #长连接超时时间,默认单位是秒 keepalive_timeout 120; #FastCGI相关参数配置网站性能,一般搭配fastcgi模块使用,例如PHP 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 128k; #gzip模块设置,需要Nginx在安装的时候有编译gzip模块 gzip on; #开启gzip压缩输出 gzip_min_length 1k; #最小压缩文件大小 gzip_buffers 4 16k; #压缩缓冲区 gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0) gzip_comp_level 2; #压缩等级 gzip_types text/plain application/x-javascript text/css application/xml; #压缩类型,默认就已经包含textml,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。 gzip_vary on; #限制一个IP的连接数 limit_zone crawler $binary_remote_addr 10m; #设置上传的文件大小 client_max_body_size 8m; #允许访问目录 autoindex on; #客户请求头缓冲大小 large_client_header_buffers 4 64k;}server块server块就和虚拟主机有关系了,一般为网站的配置文件,可以用在域名隔离网站的情况下,特征是在http块下可以无限设置数量;server块下面主要用于正常的http第七层服务,内包含location块,server块基本语法如下 listen [port | ip | ip:port | localhost] #解释,上面的port可指定自定义端口,ip为监听地址,不指定端口默认监听该IP地址的80端口,ip:port为自定义监听该地址的端口,localhost一般情况下为监听127.0.0.1的80端口,可以为localhost:80的方式监听端口 server_name [ip | domain | _] #解释,上面的server_name可以表示网站空间为单个IP地址,或者多个地址,或者是多个域名;_下划线为表示该网站空间没有名称,即访问该网站不需要任何标识都可以访问。 location [ = | ~ | ~* | ^~ ] uri { ... } #解释,具体用途看前面单独讲location的文章 #允许客户端请求的最大单文件字节数 client_max_body_size 10m; #高负载下缓冲区大小 proxy_busy_buffers_size 64k; upstream块 upstream [upstream_name] #解释,upstream为网站http负载集群使用,可以包含在stream块里面做第四层负载集群使用。 #基本语法 upstream stream_name { [ip_hash | url_hash |least_conn | least_time] server [ip | domain | localhost]:port [type] } #其中type为负载参数,用于标识服务器权重,和服务器状态,基本使用方法如下 #weight 权重参数 #down 不请求该服务器 #backup 备份服务器 #max-fails 标记不可用超时次数 #fail_timeout 标记超时时间,与上方超时次数对应,超过次数后自动标记down状态 #max-conns 节点允许最大连接数当该节点达到规定数值,其他请求会被转移到其他服务器 #slow-start 节点恢复访问时,不立刻加入集群 #--------------------------------------- #解释[ip_hash | url_hash | least_conn | least_time]的使用区别 #ip_hash 用于动态网站,基于hash计算,保持session的一致 #url_hash 静态资源缓存,加速 #least_conn 优先访问当前网站访问量最小的 #least_time 优先访问最快响应速度的服务器 stream块stream块可以嵌套upstream块,stream块的主要参数listen 监听端口preread_buffer_size 设置每个会话数据预读缓冲区的大小preread_timeout 设置每个会话数据预读取的超时时间proxy_protocol_timeout 读取代理协议头的超时时间resolver 域名解析服务器地址resolver_timeout 域名解析超时时间tcp_nodelay 启用或关闭立即发送数据(tcp_nodelay)选项variables_hash_bucket_size 设置变量哈希表中桶的大小variables_hash_max_size 设置变量哈希表的最大值---------------分割---------------上面参数注意部分;listen可以监听UDP端口,监听格式 listen [port] udp;stream里面不可以使用server_name参数,server_name参数仅在第七层服务中间有效,stream为第四层协议,自然server_name参数无效upstream 在stream里面使用的时候可以使用的格式 server [domain | ip | static_host]:port [type]上格式解读,在stream里面可以使用与http块内upstream一样的权重参数,服务器标记参数以及备份参数stream块可以用来当端口转发服务使用,仅支持纯TCP/UDP的服务使用,使用到GRE协议或者更低例如 第三层协议PPTP(GRE),IGMP,IPsec,OpenVPN等,以及第二层协议L2TP(第二层链路封装协议)ikev2,ikev3,以及各种路由协议,均不能通过Nginx的TCP/UDP代理模块代理。解释:Nginx的TCP/UDP代理仅支持第四层以及第四层以上的第五层,第六层,以及第七层的协议,在OSI模型中间,规定只有层数低的协议可以代理层数高的协议或者同级的协议,TCP和UDP属于第四层,基于第三层的基础之上,所以Nginx自然不能代理第三层的协议,或者更低的协议;但是SOCKS工作在第四层,所以可以使用Nginx的第四层代理SOCKS的协议。
2023年01月08日
26 阅读
0 评论
0 点赞
2023-01-04
location 通用参数扩充资料
接上一篇文章扩充资料在使用location的时候会出现一个常见问题,就是在使用location /xxxx的时候,假设是静态目录,需要使用root或者alias两个参数alias是普通字符串匹配,假设请求一个静态文件是http://test.com/img/static/0001.png 那么这个location配置文件这样写 location /img { alias /var/www/; }使用alias指定目录那么请求携带的URL里面带/img/static/0001.png的参数,那么会请求/var/www/static/0001.png目录下面的静态文件,如果这个文件真实存在,则正常请求,如果将alias改成root参数,那么就会请求/var/www/img/static/0001.png下查询文件,如果文件不存在会返回404;alias叫别名配置,用于访问文件系统;root为根路径配置,用于URL匹配访问文件系统,然后会把请求的路径附加在后面
2023年01月04日
4 阅读
0 评论
0 点赞
2023-01-04
Nginx的location参数
location的语法规则location 主要分为几个语法类型符号类 [= ~ ~* ^~]目录类 /xxx/通用请求类 /符号类解释= 普通字符串精确匹配^~ 带参数前缀匹配,当前只匹配该参数,其他的一律不匹配~ 正则匹配,区分请求的大小写~* 正则匹配,不区分请求的大小写/x 普通前缀匹配/ 一般为通用请求,无匹配时使用,对比上面优先级最小上顺序为例,从上到下依次优先级降低TIP A:“=”, 示范 location = /A001 { return 301 https://baidu.com; }则请求的时候需要请求的URL后缀/A001 200OK/A001/ 404TIP B:“^~” 示范 location ^~ /A001/ { return 301 https://baidu.com; }如果写入该参数,则服务器仅匹配/A001/为目录参数开头的请求例如 http://test.com/A001/ 200OKhttp://test.com/A001/x 200OKhttp://test.com/A001 404如果遇到其他设置均由^~参数来处理TIP C:“~” 示范 location ~ /A001 { return 301 https://baidu.com; }请求区分大小写,则请求的参数与设置参数的大小写不一致,则返回404,如果服务器上面设置文件里面含上面的TIP B参数则下面所有参数全部中断请求例如http://test.com/A001 200OKhttp://test.com/a001 404http://test.com/A000 404TIP D:“~*” 示范1 location ~* .(png|jpg|gif)$ { }当需要请求静态文件的时候,不区分静态文件后缀的大小写例如http://test.com/1.Png 200OKhttp://test.com/1.PNG 200OKhttp://test.com/1.png 200OK示范2 location ~* /ABC { }当请求携带目录的时候,不区分目录的大小写例如http://test.com/ABC 200OKhttp://test.com/Abc 200OKhttp://test.com/abc 200OKhttp://test.com/abcd 404如果在整体参数中间出现^~,则以^~为默认请求匹配,不请求~*参数匹配TIP E:“/xxx” 示范1 location /test { }当请求不携带任何参数的时候,默认匹配携带参数例如http://test.com/test 200OKhttp://test.com/ 404示范2 location /test2 { }例如http://test.com/test2 200OKhttp://test.com/test3 404该请求匹配通用匹配中存在特定字符串的匹配TIP F:“/” 示范 location / { }此请求优先级最低,可以自定义目录请求例如http://test.com/ 200OKhttp://test.com/ABC 200OK PS:前提是该网站默认目录下存在/ABC目录,否则返回404http://test.com/i/1.png 200OK PS:前提是该网站的/i目录下存在1.png这个文件,否则返回404该请求参数为所有请求参数中间优先级最低请求综上参数TIP编号为例优先级顺序为 A>B>C>D>E>F,F为优先级最低------------------------------------分割符号------------------------------------扩展应用某网站的/admin目录(不区分大小写)不能通过域名test.com访问到,如果访问则返回403或者404错误 server { listen 80; server_name test.com; location / { root /var/www/test.com; index index.html index.htm; } location ~* /admin { return 403; }某网站test.com在访问/index目录的时候(不区分大小写)需要嵌套访问或者跳转到该网站公司的其他子网站http://test2.com/index 上嵌套访问方法,使用反向代理 server { listen 80; server_name test.com; location / { root /var/www/test.com; index index.html index.htm; } location ~* /index { proxy_pass http://test2.com/index; }重定向方法,使用301 server { listen 80; server_name test.com; location / { root/var/www/test.com; index index.html index.htm; } location ~* /index { return 301 http://test2.com/index; }某网站访问的时候只允许访问默认页面,不得用任何URL做任何自定义请求,否则返回403 server { listen 80; server_name test.com; location = / { root /var/www/test.com; index index.html index.htm; }
2023年01月04日
9 阅读
0 评论
0 点赞
2023-01-02
Nginx编译配置文件部分解释
本文讲解Nginx的编译安装配置的结构,详细解释每一行的作用以及含义 #查看当前系统安装的Nginx编译配置 nginx -V #Nginx配置反馈文件 configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log \ --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy \ --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid \ --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-compat --with-debug --with-file-aio --with-google_perftools_module \ --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_degradation_module \ --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic \ --with-http_mp4_module --with-http_perl_module=dynamic --with-http_random_index_module --with-http_realip_module \ --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module \ --with-http_v2_module --with-http_xslt_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit \ --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module --with-threads \ --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic' \ --with-ld-opt='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E' #------------------分割符号---------------------------- #上面的配置文件拆解 --prefix=/usr/share/nginx :Nginx的安装目录 --sbin-path=/usr/sbin/nginx :可执行程序文件存放位置,用于确定可执行文件的位置,Service引用位置与这个位置相同 --modules-path=/usr/lib64/nginx/modules :第三方插件存放的位置(在编译的时候指定插件存放的位置,编译后无需此目录) --conf-path=/etc/nginx/nginx.conf :Nginx配置文件所在位置(也可以说是Nginx主配置文件的位置) --error-log-path=/var/log/nginx/error.log :错误日志文件保存位置 --http-log-path=/var/log/nginx/access.log :HTTP访问日志记录保存位置 --http-client-body-temp-path=/var/lib/nginx/tmp/client_body :配置客户端上传的缓冲区目录位置(大型服务需要设置此参数,一般建议缓冲区放在速度快的硬盘里面) --http-proxy-temp-path=/var/lib/nginx/tmp/proxy :配置反向代理缓冲目录,用于缓冲反向代理目标服务器的缓存文件 --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi :字面意思是FastCGI的缓存文件存储路径 --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi :uwsgi服务器缓存文件位置 --http-scgi-temp-path=/var/lib/nginx/tmp/scgi :SCGI服务器接收到的数据文件缓存目录 --pid-path=/run/nginx.pid :指定当前的pid文件存放位置 --lock-path=/run/lock/subsys/nginx :lock文件保存的目录 --user=nginx --group=nginx :Nginx所属的用户和用户组,再编译之前需要设置相同的用户和用户组,不然编译会报错,运行环境也需要配置用户和用户组,不然在运行软件的时候也会报错 #----------------启用组件----------------------- --with-google_perftools_module :启用ngx_google组件,用于分析性能瓶颈 --with-http_addition_module :启用过滤器,分步响应请求 --with-http_auth_request_module :启用统一用户权限验证 --with-http_dav_module :Nginx官方的WebDav模块 --with-http_degradation_module :内存不足的时候会返回HTTP 204错误代码或者HTTP 444错误代码 --with-http_flv_module :启用flv支持,使用基于时间的偏移量文件 --with-http_gzip_static_module :在线压缩输出数据流 --with-http_image_filter_module=dynamic :图片缩略图功能,调整为动态 --with-http_mp4_module :启用对在线mp4视频文件支持 --with-http_perl_module=dynamic :支持构建嵌入式动态Perl模块 --with-http_random_index_module :从目录随机挑选一个目录索引 --with-http_realip_module :从报文头中更改客户端的IP地址,默认为关 --with-http_secure_link_module :计算和检查要求所需的安全链接网址 --with-http_slice_module :支持构建将请求拆分为子请求 --with-http_ssl_module :启用HTTPS支持,没这个就无法启用HTTPS模式 --with-http_stub_status_module :查看Nginx的状态页面 --with-http_sub_module :允许文本替换Nginx响应中的文本 --with-http_v2_module :支持HTTP/2模块 --with-http_xslt_module=dynamic :支持使用一个或者多个XSLT样式表转换XML响应模块 --with-mail=dynamic :启用POP3,IAMP4,SMTP代理模块 --with-mail_ssl_module:启用邮件代理模块的SSL功能 --with-pcre :启用pcre库 --with-pcre-jit :构建pcre库中间的pcre-jit指令 --with-stream=dynamic :允许为TCP/UDP代理和负载均衡模块 --with-stream_ssl_module :TCP/UDP流模块添加SSL/TLS协议支持 --with-stream_ssl_preread_module :在不终止SSL/TLS的情况下从消息中间获取信息 --with-threads :启用线程池 --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong :设置添加到GFLAGS变量参数 #下面的参数实在是看不懂,所以就不解释了,那行参数写的过于复杂
2023年01月02日
11 阅读
0 评论
0 点赞
2023-01-02
查看Nginx的日志文件并修改位置
本篇为本系列的扩展知识内容,通过扩展知识内容深入了解Nginx整个软件的基本结构查看Nginx的默认日志位置 #查看Nginx的编译配置内容 nginx -V #Nginx组件给的反馈内容 nginx version: nginx/1.20.1 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) built with OpenSSL 1.1.1k FIPS 25 Mar 2021 TLS SNI support enabled configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-compat --with-debug --with-file-aio --with-google_perftools_module --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_degradation_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_mp4_module --with-http_perl_module=dynamic --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_xslt_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module --with-threads --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E' #--------------------分割-------------- #从以上反馈信息来看,访问错误日志在/var/log/nginx/error.log下,正常访问日志在/var/log/nginx/access.log下; #日志的位置是由编译的时候编译的默认位置为准,本次实验的服务器上所保存的日志文件为yum默认安装的Nginx目录下。 #遍历保存的日志文件目录 cd /var/log/nginx && ls -al查看当前日志文件 尝试修改日志文件的保存位置日志文件只能通过重新编译软件的方式重新编辑log文件位置下面来修改日志文件的位置 #重新配置Nginx的log文件位置(自己编译安装) #配置错误访问日志文件位置在/var/log/nginx/errorlog/error.log #配置正常访问日志文件位置在/var/log/nginx/accesslog/access.log #配置修改过的编译配置文件,一定是要你当前正在使用的Nginx配置文件修改,因为编译需要的插件环境每个人都不一样,注意:在生产环境下请勿使用本方法直接二次编译 ./configure --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/errorlog/error.log --http-log-path=/var/log/nginx/accesslog/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-compat --with-debug --with-file-aio --with-google_perftools_module --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_degradation_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_mp4_module --with-http_perl_module=dynamic --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_xslt_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module --with-threads --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E' #在服务器上配置日志目录 mkdir -p /var/log/nginx/accesslog/ && mkdir -p /var/log/nginx/errorlog/ #八个线程编译Nginx make -j8 #进入编译完成的文件目录,并配置nginx的可执行权限 systemctl stop nginx cd objs/ && chmod a+x nginx #停止Nginx服务,并备份原来的Nginx软件 mv /usr/sbin/nginx /usr/sbin/nginx.bak cp nginx /usr/sbin/nginx #重新启动Nginx服务 systemctl start nginx
2023年01月02日
6 阅读
0 评论
0 点赞
2022-12-28
Nginx项目化实训一
本篇为本系列综合项目一,配置一个博客网站,并设置负载集群;本次需要使用四台服务器,一台数据库,三台Web服务器。安装MariaDB数据库#配置源 nano /etc/yum.repo.d/mariadb.repo #-----粘贴下部分-------------------------------- [mariadb] name = MariaDB baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.2/centos7-amd64 gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck=1 #----------------------------------------------- #清除当前缓存并重新生成 yum clean all yum makcahe #安装MariaDB数据库软件 yum -y install MariaDB-server MariaDB-client #启动mariadb以及设置开机自启 systemctl start mariadb && systemctl enable mariadb #--------------------分割------------------------- #初始化MariaDB服务 sudo mysql_secure_installation #初始化的选项 Enter current password for root (enter for none):<– 回车 Set root password? [Y/n] <– 设置root密码y New password: <– 设置root用户的密码(密码设置成
[email protected]
) Re-enter new password: <– 再输入一次你设置的密码 Remove anonymous users? [Y/n] <– 删除匿名用户y Disallow root login remotely? [Y/n] <–禁止远程root用户n Remove test database and access to it? [Y/n] <– 删除Test数据库y Reload privilege tables now? [Y/n] <– 重新加载权限表y #----------------------初始化完毕------------------ #使用root用户登录数据库 mysql -u root -p -h localhost -P 3306 #密码是
[email protected]
,刚才设置的 #设置typecho用户并配置本地登录,设置用户密码为typecho mysql> GRANT ALL PRIVILEGES ON *.* TO 'typecho'@localhost IDENTIFIED BY 'typecho' WITH GRANT OPTION; mysql > flush PRIVILEGES; #创建数据库(下面这一行需要输入分号) mysql> create database typecho_db; #查看数据库是不是创建了 MariaDB [(none)]> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | typecho_db | +--------------------+ 4 rows in set (0.00 sec) MariaDB [(none)]> use mysql; #配置用户远程的登录 MariaDB [mysql]> update user set `host` = '%' where `user` = 'typecho' limit 1; #强制刷新 MariaDB [mysql]> flush privileges; 安装PHP7.3并配置php.ini,以及Typecho需要的插件同步安装,这里推荐使用MobaXterm的多执行方式同步安装#安装运行环境 yum -y install gcc gcc-c++ #安装第三方软件源 yum -y install epel-release #安装软件包 yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm #安装包管理器组件 yum -y install yum-utils #启用php7.3源 yum-config-manager --enable remi-php73 #安装PHP7需要的组件 yum -y install php php-mcrypt php-devel php-cli php-gd php-pear php-curl php-fpm php-mysql php-ldap php-zip php-fileinfo #安装扩展插件 #安装mbstring yum -y install php-mbstring #在php.ini设置mbstring弃用 nano /etc/php.ini #在文件内加入这一行 extension=mbstring.so #安装完了查看版本 #启动php-fpm,开机自启动 systemctl start php-fpm systemctl enable php-fpm使用多执行的方式安装Nginx,并配置参数配置前先下载Typecho文件 yum -y install wget unzip cd / mkdir -p /www/blog.nginx.test/ cd /www/blog.nginx.test/ wget https://github.com/typecho/typecho/releases/latest/download/typecho.zip unzip typecho.zip cd / chmod 777 /www/blog.nginx.test/ chmod 777 /www/blog.nginx.test/usr/uploads 签发SSL证书,使用WinSCP上传到主Nginx上上传到文件位置/cert/下重命名为local.crt以及local.key保存在/cert/文件目录下,等会配置文件要引用 #这里可以用编译的Nginx,也可以用yum安装的Nginx yum -y install epel-release yum -y install nginx #每台Nginx服务器的配置文件都不一样,需要多次确认 #----------------Nginx-2配置文件---------------------------- server { listen 80; server_name 10.0.0.90; root /www/blog.nginx.test/; index index.html index.htm index.php; location ~ ^/.+\.php { fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; fastcgi_pass 127.0.0.1:9000; } } #-----------------分割-------------------------------------- #----------------Nginx-3配置文件---------------------------- server { listen 80; server_name 10.0.0.91; root /www/blog.nginx.test/; index index.html index.htm index.php; location ~ ^/.+\.php { fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; fastcgi_pass 127.0.0.1:9000; } } #------------------分割------------------------------------ #----------------------Nginx-1主配置文件以及负载集群文件--- #下面的文件是配置文件,不需要上传SSL证书 server { listen 80; server_name 10.0.0.89; root /www/blog.nginx.test; index index.html index.htm index.php; location ~ ^/.+\.php { fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; fastcgi_pass 127.0.0.1:9000; } } #--------------------配置负载集群文件--------------------------- upstream blog_local { #一定要ip_hash的方式负载,不然会出现掉登录的情况 ip_hash; server 10.0.0.89:80; server 10.0.0.90:80; server 10.0.0.91:80; } server { listen 80; listen 443 ssl; server_name blog.nginx.test; #配置SSL文件和SSL密钥串 ssl_certificate /cert/local.crt; ssl_certificate_key /cert/local.key; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_session_cache shared:SSL:5m; ssl_session_timeout 5m; #设置强制HTTPS if ($scheme = http) { return 301 https://$host$request_uri; } if (!-e $request_filename) { rewrite ^(.*)$ /index.php$1 last; } #引用当前的组,后面需要用到 location /{ proxy_pass http://blog_local; } #不加这个加载网页会不正常 location ~ .* { proxy_pass http://xd-project; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 配置完Nginx之后配置Windows的hosts文件这里推荐用dism++直接修改hosts文件需要修改的HOSTS文件NGINXTEC HOSTS CHANGE10.0.0.89 blog.nginx.test本次实验使用服务器IP列表MariaDB数据库服务器IP:10.0.0.92Nginx主控服务器:10.0.0.89Nginx从服务器1:10.0.0.90Nginx从服务器2:10.0.0.91重启Nginx服务器,并在Windows的浏览器上浏览刚才搭建好的网站安装的时候需要注意一点,安装选择数据库的参数文件是这样的数据库IP地址:10.0.0.92,数据库用户名:typecho,数据库密码:typecho,数据库名:typecho_db下一步,网站链接使用https://blog.nginx.test不使用本链接会造成网页无法正常加载(这个决定服务器的文件外部文件引用,如果有错无法正确加载css和js文件,望悉知)另外两个从站可以从主站直接复制过去也可以另外安装,另外安装的网站在输入数据库信息之后提示数据存在选择保留原有数据继续安装。安装好后打开网站新建文章查看文章是否正常。 查看发布的文章是否正常 本次项目化实训一结束
2022年12月28日
8 阅读
0 评论
0 点赞
2022-12-28
Nginx配置正向代理
Nginx正向代理是和SOCKS5一样的类型的工具,Nginx的正向代理又称HTTP代理,工作在第七层可以通过Nginx的正向代理去访问某些不能被访问的网站。配置Nginx正向代理Nginx自带的正向代理模块不支持HTTPS正向代理,仅支持HTTP正向代理,所以这里需要编译第三方的正向代理模块。 yum -y install patch #下载第三方插件模块 cd /nginx-moduls wget https://github.com/chobits/ngx_http_proxy_connect_module/archive/master.zip yum -y install unzip && unzip master.zip mv ngx_http_proxy_connect_module-master nginx-http-proxy cd / #下面的操作全部回车,默认就行 #查看做实验虚拟机的参数配置文件 nginx -V #复制看到的参数配置文件,如下(如果是用yum安装的和下面肯定一致) ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' #安装编译环境 yum -y install gcc gcc-c++ pcre pcre-devel openssl openssl-devel zlib zlib-devel gd gd-devel #创建用户,如果直接使用做实验的机器则不需要此操作 useradd -s /sbin/nologin nginx #安装依赖库1 必装 sudo yum install -y libxml2-devel.x86_64 #安装依赖库2 必装 sudo yum install -y libxslt-devel.x86_64 #下载Nginx源码包 wget https://nginx.org/download/nginx-1.22.1.tar.gz tar -xvf nginx-1.22.1.tar.gz #进入解压好的源码包 cd nginx-1.22.1/ #配置插件包,使用Nginx 1.22.1以及1.23以上的需要用102101文件,不然会报错 patch -p1 < /nginx-moduls/nginx-http-proxy/patch/proxy_connect_rewrite_102101.patch #下面编写Nginx的配置文件内容,准备编译(下面是已经准备好的配置文件) ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --add-module=/nginx-moduls/nginx-http-proxy --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' #--------------------------------------------------------- #返回下面的参数就代表可以准备编译了 Configuration summary + using threads + using system PCRE library + using system OpenSSL library + using system zlib library nginx path prefix: "/etc/nginx" nginx binary file: "/usr/sbin/nginx" nginx modules path: "/usr/lib64/nginx/modules" nginx configuration prefix: "/etc/nginx" nginx configuration file: "/etc/nginx/nginx.conf" nginx pid file: "/var/run/nginx.pid" nginx error log file: "/var/log/nginx/error.log" nginx http access log file: "/var/log/nginx/access.log" nginx http client request body temporary files: "/var/cache/nginx/client_temp" nginx http proxy temporary files: "/var/cache/nginx/proxy_temp" nginx http fastcgi temporary files: "/var/cache/nginx/fastcgi_temp" nginx http uwsgi temporary files: "/var/cache/nginx/uwsgi_temp" nginx http scgi temporary files: "/var/cache/nginx/scgi_temp" #--------------分割----------------- #这里只要编译,不需要编译安装,所以不要make install,会出错的 #八个线程编译源码包 make -j8 #如果出现编译失败请删除之前的旧编译环境 #编译好了之后进入objs文件夹,里面有编译好的Nginx文件,复制到需要配置Nginx的服务器上 #停掉Nginx服务 systemctl stop nginx #复制Nginx文件到/usr/sbin/下 #配置可执行权限 chmod a+x /usr/sbin/nginx #配置查看Nginx配置文件有没有新编译的插件在上面 nginx -v #启动Nginx服务器 systemctl start nginx查看配置文件有没有刚才编译的插件 查看到Nginx正向代理插件安装成功了,下面配置Nginx配置文件 server { resolver 223.5.5.5 ipv6=off; resolver_timeout 5s; listen 880; proxy_connect; proxy_connect_allow 443 80; proxy_connect_connect_timeout 20s; proxy_connect_read_timeout 20s; proxy_connect_send_timeout 20s; location / { proxy_pass $scheme://$http_host$request_uri; } } 上面的配置文件配置完了重启Nginx服务器 systemctl restart nginx在另外一台Linux上打开网络,HTTP代理,输入以下参数HTTP代理IP地址10.0.0.113;端口880;设置完的结果截图 保存,使用curl命令试试能不能curl访问到一baiducurl http://baidu.com 经过测试,网站已经通过HTTP代理打开
2022年12月28日
23 阅读
0 评论
0 点赞
2022-12-28
Nginx实现服务器动静分离
Nginx可以实现动态和静态分离的操作,一般情况下用于Nginx分离PHP或者Nginx分离js脚本,通过请求的类型转发请求到应用服务器;本篇文章讲解使用Nginx配置PHP分离文件。PHP FastCGI配置分离的Nginx配置文件PHP服务器IP:10.0.0.99:9000Nginx服务器IP:10.0.0.113测试网站使用之前配置的blog服务器 location ~ ^/.+\.php { fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; fastcgi_pass 10.0.0.99:9000; } PHP独立服务器安装PHP7.3 #安装运行环境 yum -y install gcc gcc-c++ #安装第三方软件源 yum -y install epel-release #安装软件包 yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm #安装包管理器组件 yum -y install yum-utils #启用php7.3源 yum-config-manager --enable remi-php73 #安装PHP7需要的组件 yum -y install php php-mcrypt php-devel php-cli php-gd php-pear php-curl php-fpm php-mysql php-ldap php-zip php-fileinfo #安装完了查看版本 php -v #安装版本信息 PHP 7.3.33 (cli) (built: Dec 19 2022 14:30:27) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.33, Copyright (c) 1998-2018 Zend Technologies #启动php-fpm,开机自启动 systemctl start php-fpm systemctl enable php-fpm #防火墙放行端口9000 TCP firewall-cmd --add-port=9000/tcp --zone=public --permanent firewall-cmd --reload #可以关闭防火墙,在实际生产环境中间请勿随意关闭防火墙 #关闭SELINUX,不关闭所有服务只有OpenSSH服务是可以被访问的,其他的服务都无法通过网络访问 setenforce 0 #临时关闭SELINUX #安装mbstring yum -y install php-mbstring #在php.ini设置mbstring弃用 nano /etc/php.ini #在文件内加入这一行 extension=mbstring.so #保存重启PHP-FPM systemctl restart php-fpm修改Nginx的配置文件 upstream php-fastcgi { server 127.0.0.1:9000; server 10.0.0.113:9000; } server { listen 80; listen 443 ssl; server_name blog.nginx.test; alias /www/blog.nginx.test; index index.html index.htm index.php; ssl_certificate /cert/local.crt; ssl_certificate_key /cert/local.key; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_session_cache shared:SSL:5m; ssl_session_timeout 5m; if ($scheme = http) { return 301 https://$host$request_uri; } if (!-e $request_filename) { rewrite ^(.*)$ /index.php$1 last; } location ~ ^/.+\.php { fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; fastcgi_pass php-fastcgi; } #设置缓存3天 location ~* \.(js|css|jpg|gif|png|bmp|swf)$ { expires 3d; } } 重启Nginx服务后打开浏览器查看网站能不能正常打开 systemctl restart nginx浏览器打开网站
2022年12月28日
4 阅读
0 评论
0 点赞
2022-12-26
Nginx配置PHP网页(高级)
本篇为本系列教程第三个项目实战内容,本次内容需要配置Nginx,MariaDB,PHP7.3搭建Typecho网站。搭建之前先下载Typecho的安装包: >>>下载<<< CentOS下安装MariaDB #配置源 nano /etc/yum.repo.d/mariadb.repo #-----粘贴下部分----- [mariadb] name = MariaDB baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.2/centos7-amd64 gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck=1 #------------------- #清除当前缓存并重新生成 yum clean all yum makcahe #安装MariaDB数据库软件 yum -y install MariaDB-server MariaDB-client #启动mariadb以及设置开机自启 systemctl start mariadb && systemctl enable mariadb #--------------------分割------------------------- #初始化MariaDB服务 sudo mysql_secure_installation #初始化的选项 Enter current password for root (enter for none):<– 回车 Set root password? [Y/n] <– 设置root密码y New password: <– 设置root用户的密码(密码设置成
[email protected]
) Re-enter new password: <– 再输入一次你设置的密码 Remove anonymous users? [Y/n] <– 删除匿名用户y Disallow root login remotely? [Y/n] <–禁止远程root用户n Remove test database and access to it? [Y/n] <– 删除Test数据库y Reload privilege tables now? [Y/n] <– 重新加载权限表y #----------------------初始化完毕------------------ #使用root用户登录数据库 mysql -u root -p -h localhost -P 3306 #密码是
[email protected]
,刚才设置的 #设置typecho用户并配置本地登录,设置用户密码为typecho mysql> GRANT ALL PRIVILEGES ON *.* TO 'typecho'@localhost IDENTIFIED BY 'typecho' WITH GRANT OPTION; mysql > flush PRIVILEGES; #创建数据库(下面这一行需要输入分号) mysql> create database typecho_db; #查看数据库是不是创建了 MariaDB [(none)]> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | typecho_db | +--------------------+ 4 rows in set (0.00 sec) MariaDB [(none)]> 安装PHP-FPM模块 #安装运行环境 yum -y install gcc gcc-c++ #安装第三方软件源 yum -y install epel-release #安装软件包 yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm #安装包管理器组件 yum -y install yum-utils #启用php7.3源 yum-config-manager --enable remi-php73 #安装PHP7需要的组件 yum -y install php php-mcrypt php-devel php-cli php-gd php-pear php-curl php-fpm php-mysql php-ldap php-zip php-fileinfo #安装完了查看版本 php -v #安装版本信息 PHP 7.3.33 (cli) (built: Dec 19 2022 14:30:27) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.33, Copyright (c) 1998-2018 Zend Technologies #启动php-fpm,开机自启动 systemctl start php-fpm systemctl enable php-fpm 不编译安装Nginx 1.22 yum -y install epel-release yum -y install nginx systemctl start nginx && systemctl enable nginx上传Typecho的安装包文件到CentOS,配置路径使用WinSCP工具上传到CentOS 下面对文件进行操作 cd /www/blog.nginx.test unzip typecho.zip Archive: typecho.zip inflating: LICENSE.txt creating: admin/ creating: admin/img/ inflating: admin/img/
[email protected]
inflating: admin/img/ajax-loader.gif inflating: admin/img/typecho-logo.svg inflating: admin/img/
[email protected]
inflating: admin/img/icons.png ........ #-------- ls admin index.php install install.php LICENSE.txt typecho.zip usr var #------------------------ cd /www chmod 777 blog.nginx.test/ 使用KeyManager签发一个SSL证书,域名为blog.nginx.test将证书名字改成local.crt,私钥文件名字改成local.key,上传到服务器的/cert目录下,设置cert目录权限为777配置Nginx网站配置文件 nano /etc/nginx/conf.d/blog.nginx.test.conf #------下面为Nginx网站配置文件 server { listen 80; listen 443 ssl; server_name blog.nginx.test; alias /www/blog.nginx.test; index index.html index.htm index.php; ssl_certificate /cert/local.crt; ssl_certificate_key /cert/local.key; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_session_cache shared:SSL:5m; ssl_session_timeout 5m; if ($scheme = http) { return 301 https://$host$request_uri; } if (!-e $request_filename) { rewrite ^(.*)$ /index.php$1 last; } location ~ ^/.+\.php { fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; fastcgi_pass 127.0.0.1:9000; } #设置缓存3d location ~* \.(js|css|jpg|gif|png|bmp|swf)$ { expires 3d; } } #---------Nginx配置文件配置完毕重启Nginx服务器 systemctl restart nginx最后步骤 #安装mbstring yum -y install php-mbstring #在php.ini设置mbstring弃用 nano /etc/php.ini #在文件内加入这一行 extension=mbstring.so #保存重启PHP-FPM和Nginx服务器 systemctl restart php-fpm && systemctl restart nginx #设置上传目录权限 cd /网站目录 chmod 777 usr/uploads打开浏览器输入https://blog.nginx.test/install.php出现证书问题不需要管,证书是自签名的,自签名的证书一般不信任。安装Typecho 设置数据库参数(一开始设置的用户名密码和数据库名) 设置用户名和密码(密码设置成
[email protected]
) 设置完成后发布一个文章 查看数据库有没有出现数据表
2022年12月26日
20 阅读
0 评论
0 点赞
2022-12-26
Nginx配置PHP网页(初级)
Nginx作为Web服务器来讲,并不能处理动态请求,例如PHP网页,Nginx只能将请求转给PHP运行池,PHP运行池通过PHP解释器运行PHP语句。使用php-fpm(PHP FastCGI Process Manager: FastCGI进程管理器)安装PHP-FPM#安装运行环境 yum -y install gcc gcc-c++ #安装第三方软件源 yum -y install epel-release #安装软件包 yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm #安装包管理器组件 yum -y install yum-utils #启用php7.3源 yum-config-manager --enable remi-php73 #安装PHP7需要的组件 yum -y install php php-mcrypt php-devel php-cli php-gd php-pear php-curl php-fpm php-mysql php-ldap php-zip php-fileinfo #安装完了查看版本 php -v #安装版本信息 PHP 7.3.33 (cli) (built: Dec 19 2022 14:30:27) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.33, Copyright (c) 1998-2018 Zend Technologies #启动php-fpm,开机自启动 systemctl start php-fpm systemctl enable php-fpmPHP-FPM默认监听的FastCGI端口是9000 TCP在Nginx上设置PHP运行池 server { listen 80; server_name php.nginx.test; root /www/php.nginx.test; index index.html index.htm index.php; location ~ ^/.+\.php { fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; fastcgi_pass 127.0.0.1:9000; } location ~* \.(js|css|jpg|gif|png|bmp|swf)$ { expires 3d; } }创建一个PHP脚本,位置放到你们设置的Nginx网站的位置,本教程在/www/php.nginx.test/下 <?php echo("this is php website!"); ?>由于配置的域名实际并不存在,所以这里需要在hosts里面键入当前的域名,并重启Nginx服务127.0.0.1 php.nginx.test测试php网页是否正常,使用curl命令 curl http://php.nginx.test/index.php查看测试结果 PHP 配置完成
2022年12月26日
4 阅读
0 评论
0 点赞
2022-12-20
Nginx使用TCP代理实战项目
本篇是本系列第二篇实战内容小李是某网络公司的运维,由于近期新冠肺炎疫情的影响,该网络公司的程序员需要居家办公,由于生产环境各程序员需要在家里远程连接公司的生产环境机房里面的服务器,但是由于生产环境不能直接暴露在公网环境下,所以现需要连接生产环境服务器的SSH端口以及SOCKS服务端口项目需求分析:SOCKS默认端口:1080SSH默认端口:22目标服务器:10.0.1.1Nginx转发的服务器地址:10.0.0.113安装SOCKS5代理服务器#安装依赖 yum -y install gcc openldap-devel pam-devel openssl-devel wget http://jaist.dl.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz tar -xvf ss5-3.8.9-8.tar.gz cd ss5-3.8.9/ ./configure make && make install #目前配置文件保留的位置 nano /etc/opt/ss5.conf #添加以下内容(配置方便不使用密码登录) { permit - 0.0.0.0/0 - 0.0.0.0/0 - - - - - permit u 0.0.0.0/0 - 0.0.0.0/0 - - - - - auth 0.0.0.0/0 - - auth 0.0.0.0/0 - u } #给SOCKS5可执行能力 chmod a+x /tc/init.d/ss5 #启动SOCKS5 service ss5 start 配置服务器防火墙 systemctl start firewalld systemctl enable firewalld firewall-cmd --add-port=8022/tcp --zone=public --permanent firewall-cmd --add-port=10808/tcp --zone=public --permanent firewall-cmd --reload配置Nginx的TCP转发文件 nano /etc/nginx/stream.d/ftp-ssh.conf upstream ssh_local { server 10.0.1.1:22; } server { listen 8022; proxy_pass ssh_local; } upstream socks_local { server 10.0.1.1:1080; } server { listen 10808; proxy_pass socks_local; }测试是否转发成功 测试SOCKS服务器是否能正常转发流量 因为软件显示的问题,实际的速度比这个要高
2022年12月20日
17 阅读
0 评论
0 点赞
2022-12-20
Nginx实现UDP流量转发
Nginx从1.9之后支持UDP/TCP 第四层流量转发,接上一次的转发TCP流量,本次转发UDP流量;本次转发8.8.8.8的DNS流量。Nginx转发8.8.8.8 53UDPStream配置文件 stream { upstream local_dns { server 8.8.8.8:53; } server { listen 53 udp; proxy_pass local_dns; } }重启Nginx服务 systemctl restart nginx测试本机有没有转发8.8.8.8的流量 使用Windows客户端测试是否转发流量
2022年12月20日
17 阅读
0 评论
0 点赞
2022-12-18
Nginx实现TCP流量转发
Nginx的功能非常强大,Nginx从1.9之后开始支持了TCP 以及UDP流量转发的功能,Nginx以前转发流量只能通过第七层的HTTP流量转发,不能直接通过第四层的流量转发,非常消耗服务器资源;这里就使用OpenSSH的22端口转发到8022端口上,Nginx配置TCP流量转发写在开头,stream插件的配置文件等级和http同级,因为http模块里面只能写网站配置文件的内容,stream只能写第四层流量转发的内容,两者不能混着写在一起。stream参数仅可以写TCP/UDP转发配置,http参数只能写网站配置文件参数。配置前先修改Nginx的主配置文件 nano /etc/nginx/nginx.conf #Nginx主配置文件 #省略上部分 stream { #引用外部文件 include /etc/nginx/stream.d/*.conf; }配置Nginx网站配置文件 nano /etc/ngixn/stream.d/192.168.197.141.conf #用之前的配置文件为基础修改配置文件 #Nginx配置文件部分 stream { upstream local_ssh{ server 127.0.0.1:22; } server { #注意一点,不能配置server_name在stream配置文件里面 listen 8022; proxy_pass local_ssh; } }测试8022是不是转发到了22端口上 实测,本地22端口被转发到了8022端口上Windows 10 tcping测试 测试已监听8022端口Windows10 OpenSSH测试8022端口 Windows10测试已成功
2022年12月18日
14 阅读
0 评论
0 点赞
2022-12-16
Nginx搭建WebDav服务器
WebDav是用超文本传输协议的方法在服务器上划出一个存储块,用户可以使用用户名和密码访问存储在WebDav上的文件;WebDav可以直接挂载到本地当本地磁盘使用,目前的苹果iCloud,谷歌Google 云盘以及微软的OneDrive都是以WebDav的形式挂载到客户端的Nginx配置WebDav由于之前安装的Nginx并不包含第三方插件的WebDav,所以这里需要自己编译安装WebDav插件,(无缝切换Nginx版本) #查看做实验虚拟机的参数配置文件 nginx -V #复制看到的参数配置文件,如下(如果是用yum安装的和下面肯定一致) ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' #安装编译环境 yum -y install gcc gcc-c++ pcre pcre-devel openssl openssl-devel zlib zlib-devel gd gd-devel #创建用户,如果直接使用做实验的机器则不需要此操作 useradd -s /sbin/nologin nginx #安装依赖库1 必装 sudo yum install -y libxml2-devel.x86_64 #安装依赖库2 必装 sudo yum install -y libxslt-devel.x86_64 #下载Nginx源码包 wget https://nginx.org/download/nginx-1.22.1.tar.gz tar -xvf nginx-1.22.1.tar.gz #下载WebDav环境包 mkdir -p /nginx-moduls/ #如果git不了就下载webdav插件包,复制到虚拟机再进行编译安装(插件包需要放在/nginx-moduls/nginx-webdav目录下面或者更改编译配置文件中间的–with-http_dav_module --add-module=/nginx-moduls/nginx-webdav参数,add-module是插件路径,如果目录不一样需要自己修改) git clone https://github.com/arut/nginx-dav-ext-module.git /nginx-moduls/nginx-webdav #编译Nginx cd nginx-1.22.1/ #复制下面的参数配置文件(已经调好配置文件了,添加了这一行–with-http_dav_module --add-module=/nginx-moduls/nginx-webdav ) ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log -–with-http_dav_module --add-module=/nginx-moduls/nginx-webdav --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' #可以编译了,注意,不要执行make install,如果执行了当前的Nginx服务会出现问题 make #停止当前Nginx服务,并备份当前Nginx的应用文件(一定要停止,不停止会报错) systemctl stop nginx mv /usr/sbin/nginx /usr/sbin/nginx.bak #进入objs文件目录,给编译好的nginx附上可执行 cd objs/ chmod a+x nginx cp nginx /usr/sbin/ #启动服务 systemctl start nginx #查看是否编译了WebDav功能 nginx -V接上操作,可以看见支持了WebDav 配置目录加密 yum -y install httpd-tools mkdir -p /user/dav-pasword/ htpasswd -c /user/dav-password/.auth_password user1 Password:123456网站配置文件(可设置HTTPS加密,这里不做示范) server { listen 80; #配置虚拟名称 server_name webdav.nginx.test; location / { #配置目录如果配置了访问路径需要把root改成alias root /www/webdav.nginx.test; #配置缓存位置 dav_methods PUT DELETE MKCOL COPY MOVE; #启用 WebDav 的一些扩展关键字用于支持应用访问 dav_ext_methods PROPFIND OPTIONS; #设置 WebDav 目录下新增文件的默认权限 dav_access user:rw group:rw all:r; #创建文件夹时自动创建路径上不存在的文件夹 create_full_put_path on; #设置报文最大长度便于文件传输,这里为8MB client_max_body_size 8m; #让 nginx 自动生成索引页面,避免 403 错误 autoindex on; #---------------分割--------------- #配置目录加密,同前面的目录加密方法一样 #设置登录页面名称 auth_basic "User Login"; auth_basic_user_file /user/dav-password/.auth_password; } } 重启Nginx服务器 systemctl restart nginx在上图配置的目录内创建几个文件夹 cd /www/webdav.nginx.test mkdir test1 test2 test3 test4 下面测试curl能不能正常获取401参数 使用WinSCP工具测试是否创建了WebDav 后面会提示让你输入用户名和密码,用户名和密码为之前创建的user1 123456 输入之后进入WebDav 此时测试一下能不能在WebDav内复制文件,我们从桌面拖动一个文件进去 查看上传结果 到服务器上查看这个文件是不是存在的 目前看到在服务器内该文件是存在的
2022年12月16日
31 阅读
0 评论
1 点赞
2022-12-15
Nginx配置目录加密访问
有些情况下Nginx服务器下面的东西是不能被其他用户随意访问的,所以一般的手段是对该目录进行加密,需要指定拥有密码的用户使用密码访问。Nginx配置加密目录首先配置加密文件 yum -y install httpd-tools mkdir -p /user/dir-pasword/ htpasswd -c /user/dir-password/.auth_password user1 Password:123456配置HTML文件 mkdir -p /www/password.nginx.test/ nano /www/password.nginx.test/index.html <html> <body><p>Password Test</p></body> </html>配置Nginx网站配置文件 server { listen 80; #如果需要配置SSL下面自行配置SSL,这里不做示范 #本次实验可以在之前的配置文件中间添加使用,也可以自己新建一个站点,新建站点需要添加hosts文件 server_name password.nginx.test; location /password { #这一行引号内的可以自定义,稍后会演示这个的用途 auth_basic "User Login"; auth_basic_user_file /user/dir-password/.auth_password; #如果上方的location后面是一个"/"那么填写root或者alias都没有问题,如果上面的是/password,那么这个访问的时候查找的是/www/password.nginx.test/pasword/index.html,而不是直接找对应的目录 alias /www/password.nginx.test/; index index.html index.htm; } } 重启Nginx服务,curl http://password.nginx.test/password 提示401被加密,浏览器访问该页面,看到设置提示User Login 登录后查看页面
2022年12月15日
13 阅读
0 评论
0 点赞
2022-12-13
使用Nginx搭建一个远程打印机服务器
本篇为本系列第一个实战项目,使用Nginx的443端口搭建一个打印机服务器,本文需要的软件有cups和Nginx以及一个签名签好的SSL证书,服务器为CentOS7,客户端为CentOS7本机 20H2cups(苹果公司开发的打印机服务器软件)安装cups yum -y install epel-release yum -y install cups systemctl start cups ss -ant #如果ss -ant之后能看到631端口被监听那就是启动了cups服务,打开浏览器访问cups管理面板,添加一个PDF打印机(因为没有实体打印机) yum -y install cups-pdf浏览器打开服务器IP地址+:631端口访问管理面板点击Printer,能显示打印机名称上面的打印机URL就是这台打印机的共享目录,这个复制好这是我的打印机共享目录http://127.0.0.1:631/printers/Cups-PDF然后打开Nginx,上传SSL证书,然后反向代理127.0.0.1:631,监听80端口然后开启强制HTTPS。 server { listen 80; listen 443 ssl; server_name 192.168.197.141; ssl_certificate /crt/192.168.197.141/192.168.197.141.crt; ssl_certificate_key /crt/192.168.197.141/192.168.197.141.key; ssl_session_timeout 5m; ssl_session_cache shared:SSL:5m; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on; #强制HTTPS跳转 if ($scheme = http) { return 301 https://$host$request_uri; } location / { proxy_pass http://127.0.0.1:631; } }打开CentOS的打印机管理工具,因为Linux的默认打印机协议是ipp,这里直接输入默认的ipp://192.168.197.141/printers/Cups-PDF共享路径即可访问共享(走SSL)因为Nginx反向代理了打印机,会自动HTTPS加密(还可以过CDN)(实际测试过可以过CloudFlare)因为cups本身就是HTTP原理。 输入上面的ipp://192.168.197.141/printers/Cups-PDF添加,驱动选择Generic->型号CUPS-PDF->应用然后查看打印机面板,已添加一台打印机
2022年12月13日
72 阅读
0 评论
0 点赞
2022-12-12
Nginx配置负载集群
Nginx的负载集群是基于的反向代理实现的,对主服务器的要求非常高,实际上使用反向代理的时候负载服务器要求最高,负载集群服务器决定了整个业务的资源分配和所有压力;Nginx配置负载集群Nginx的负载集群主要配置的是upstream组,upstream组里面为负载服务器。配置负载集群upstream配置文件 upstream stream_server { server 127.0.0.1:8080; server 127.0.0.1:8081; server 127.0.0.1:8082; server 127.0.0.1:8083; }这种情况下的负载集群只能在某个服务器down的情况下才可以切换服务器,而且也会造成一台服务器连接数爆满,其他的服务器空闲资源太多;而且没有权重设置所以upstream配置文件需要改成下面的样子(添加权重) upstream stream_server { server 127.0.0.1:8080 weight=1; server 127.0.0.1:8081 weight=1; server 127.0.0.1:8082 weight=1; server 127.0.0.1:8083 weight=1; }weight=1为权重平分,也就是负载流量平均分配几台设备,通俗一点就是4个客户机访问服务,然后客户机的访问流量会平均分配给四台服务器;如果是8个客户机访问服务器,那就是每台服务器会承载2个用户的访问。如果出现硬件资源有差别的情况,则可以修改权重,假设上面的8080端口服务器性能很强,是其他几台服务器的7倍,那上面的权重可以修改成下面的样子 upstream stream_server { server 127.0.0.1:8080 weight=7; server 127.0.0.1:8081 weight=1; server 127.0.0.1:8082 weight=1; server 127.0.0.1:8083 weight=1; }上面的为例,假设有10个并发请求,其中第一台服务器总共承载10个中间的7个,下面的三台分别承载1个请求。标记upstream组里面的服务器的状态为down。 upstream stream_server { server 127.0.0.1:8080 down; server 127.0.0.1:8081 weight=1; server 127.0.0.1:8082 weight=1; server 127.0.0.1:8083 weight=1; }当第一台服务器被标记成down的时候,那这个服务器就默认不请求,只请求下面三台在线的设备。配置备份服务器,假设有三台负载均衡服务器,upstream文件的内容 upstream stream_server { server 127.0.0.1:8080 down; server 127.0.0.1:8081 backup; server 127.0.0.1:8082 weight=1; }上述配置文件配置第一台服务器down状态,第二台服务器为备份服务器,第三台为正常负载服务器。Nginx正确配置负载集群 upstream stream_server { #实际使用业务的时候需要使用ip_hash保证一个连接数在关闭之前都连接一台服务器 ip_hash; #节省时间,就配置两台服务器,并且不配置权重,配置权重的实验不太好演示,需要大量的连接数才可以测试出结果。 #注意,upstream组里面的web服务器负载集群必须是能正常访问的(不能正常访问是不能成功重启Nginx服务的) server 127.0.0.1:8080; server 127.0.0.1:8081; } server { listen 80; server_name upstream.nginx.test; client_max_body_size 1024M; #反向代理upstream组 location / { proxy_pass http://stream_server; proxy_set_header Host $host:$server_port; } }8080端口网页的HTML文件<html> <body><p>Server 1</p></body> </html>8081端口的网页的HTML文件<html> <body><p>Server 2</p></body> </html>然后就是贴出两个网站的Nginx配置文件8080网站配置文件 server { listen 8080; server_name 127.0.0.1; location /{ root /www/web1/; index index.html index.htm; } }8081网站配置文件 server { listen 8081; server_name 127.0.0.1; location / { root /www/web2/; index index.html index.htm; } }测试curl测试服务器请求,请求之后关闭对应的服务器后再次请求 然后关闭Server 2,再次请求 服务器已经切换到服务器1上配置强制HTTPS同前面的设置方法配置HTTPS,网站配置文件 #upstream组配置文件 upstream stream_server { #实际使用业务的时候需要使用ip_hash保证一个连接数在关闭之前都连接一台服务器 ip_hash; #节省时间,就配置两台服务器,并且不配置权重,配置权重的实验不太好演示,需要大量的连接数才可以测试出结果。 #注意,upstream组里面的web服务器负载集群必须是能正常访问的(不能正常访问是不能成功重启Nginx服务的) server 127.0.0.1:8080; server 127.0.0.1:8081; } #网站配置文件 server { listen 80; listen 443 ssl; server_name upstream.nginx.test; #设置SSL证书和SSL密钥的位置(绝对路径) ssl_certificate /crt/upstream.nginx.test/upstream.nginx.test.crt; ssl_certificate_key /crt/upstream.nginx.test/upstream.nginx.test.key; #设置超时5分钟 ssl_session_timeout 5m; #配置ssl_session缓存 ssl_session_cache shared:SSL:5m; #配置SSL协议1.1 1.2 1.3 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #配置加密套件(这里给个通用写法,因为加密类型比较多)OpenSSL标准 ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on; #设置强制HTTPS,注意Nginx下面的if语句的括号周围需要空格,不能顶格写 if ($scheme = http) { return 301 https://$host$request_uri; } location / { proxy_pass http://stream_server; } }测试HTTP会不会强制301到HTTPS以及直接测试HTTPS #使用curl命令的时候记得要加-k参数 curl -k https://upstream.nginx.test #修改完参数记得要重启Nginx systemctl restart nginx
2022年12月12日
14 阅读
0 评论
2 点赞
2022-12-12
Nginx反向代理的应用
Nginx反向代理一般情况下指代理服务器接受互联网上的连接请求,然后将请求的内容转发到目标服务器上,目标服务器上的请求再通过代理服务器返回到客户端;这种方式能让真正的业务服务器不能直接通过公网的方式请求到,只能通过代理服务器代理之后再请求服务器。Nginx设置反向代理首先设置一个HTML静态页面<html> <body><p>Test Nginx Proxy</p></body> </html>然后保存到/www/127.0.0.1/目录下,保存文件名为index.html设置网站配置文件 server { #端口设置成81,等会反向代理设置的时候代理成80端口 listen 81; #主机名可以设置成IP地址 server_name 127.0.0.1; location / { root /www/127.0.0.1/; index index.html index.htm; } } systemctl restart nginx #记住要重启Nginx才可以生效配置文件设置完之后使用curl命令获取页面参数 curl http://127.0.0.1:81这是curl之后的结果 下面设置反向代理的参数首先在hosts文件内设置一个域名对应的参数(等会要用到)设置一个根本不会撞到的域名 www.nginx.test nano /etc/hosts 127.0.0.1 www.nginx.test然后设置反向代理站的配置文件 server { listen 80; server_name www.nginx.test; location / { #设置反向代理 proxy_pass http://127.0.0.1:81; } }重启Nginx服务器,curl http://www.nginx.test 查看返回结果 查看返回结果可以看出,反向代理之后自动转发到127.0.0.1地址的80端口上,实现了服务器代理访问HTTP服务同理,在反向代理的时候开启强制HTTPS访问,网站虽然经过了反向代理,隐藏了真实的服务器IP地址,但是数据传输还是会以明文的方式传送到代理服务器上;将上述反向代理文件小改 server { #监听80端口和443端口 listen 80; listen 443 ssl; #设置网站的名称 server_name www.nginx.test; #设置SSL证书和SSL密钥的位置(绝对路径) ssl_certificate /crt/www.nginx.test/www.nginx.test.crt; ssl_certificate_key /crt/www.nginx.test/www.nginx.test.key; #设置超时5分钟 ssl_session_timeout 5m; #配置ssl_session缓存 ssl_session_cache shared:SSL:5m; #配置SSL协议1.1 1.2 1.3 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #配置加密套件(这里给个通用写法,因为加密类型比较多)OpenSSL标准 ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on; #设置强制HTTPS,注意Nginx下面的if语句的括号周围需要空格,不能顶格写 if ($scheme = http) { return 301 https://$host$request_uri; } location / { #设置反向代理 proxy_pass http://127.0.0.1:81; } }保存退出后重启Nginx服务 systemctl restart nginx使用curl命令尝试是否被强制301到HTTPS上 然后使用curl命令请求SSL页面(需要-k参数忽略安全性) curl -k https://www.nginx.testHTTPS请求结果
2022年12月12日
11 阅读
0 评论
0 点赞
2022-12-11
Nginx配置SSL并设置强制HTTPS
HTTPS(超文本安全传输协议)是现代网站常用的访问加密手段,使用范围非常广泛,各大银行网站,购物网站以及绝大部分涉及到核心商业利益的网站都使用了HTTPS协议;本文详细解释基于CentOS下使用Nginx搭建HTTPS网站。首先需要的软件 KeyManager (亚洲诚信) >>>下载软件<<< CentOS7 + Nginx首先签发一个SSL证书,打开KeyManager,然后点击创建证书,证书类型为服务器证书,名称填写localhost(因为没有实际的域名,不太好指定证书),其他的默认,点击创建证书 导出证书,导出类型为Nginx(pem) 导出之后上传到服务器里面,找到Nginx的网站配置文件 #在网站配置文件下面添加一条server参数 server{ #监听443端口(HTTPS监听的是443端口HTTP监听的是80端口) listen 80; listen 443 ssl; #服务器主机名 server_name localhost; #证书文件位置,以你上传的位置为准 ssl_certificate /crt/localhost/localhost_chain.crt; #证书密钥文件位置,以你上传的位置为准 ssl_certificate_key /crt/localhost/localhost_key.key; #设置超时5分钟 ssl_session_timeout 5m; #配置ssl_session缓存 ssl_session_cache shared:SSL:5m; #配置SSL协议 ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #配置加密套件(这里给个通用写法,因为加密类型比较多)OpenSSL标准 ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4; ssl_prefer_server_ciphers on; #配置强制HTTPS if ($scheme = http) { #这一行的括号需要有空格,不然重启会报错 return 301 https://$host$request_uri; } location / { root /www/html; index index.html index.htm; } }编辑完毕之后重启Nginx服务,如果遇到报错就使用 systemctl status nginx #查看文件哪里报错了配置完重启不报错了那就测试功能是否正常 #使用curl命令请求本地页面,正确配置是301 curl http://localhost #使用curl -k因为证书是自己签名的,所以一般情况下不受信用的 curl -k https://localhost 现在可以看见HTTPS curl之后的网页
2022年12月11日
6 阅读
0 评论
0 点赞
2022-12-10
Nginx做重定向
重定向分为301重定向和302重定向301重定向是永久重定向,例如某论坛更换了域名,但是原来搜索引擎SEO优化只有原来的域名才有,新的域名没有SEO优化,重新更新优化需要时间,所以需要在原来的域名上做301永久重定向;在重定向之后原来的域名和URL都会被重定向到新的域名和URL上,这种操作在SEO优化里面是可以被允许的,或者301被用来强制HTTPS,在很多有重要服务的网站,没有SSL加密是很危险的事情,可能会导致信息泄露,所以可以在用户请求的时候判断是不是http协议请求的网站,如果条件成立就强制301到HTTPS的网站上。302是临时重定向,浏览器会认为请求的域名是临时的,所以不会直接回显重定向的域名和URL,所以一般用于临时的重定向,一般情况下浏览器认为的302重定向是不安全的;302重定向可能会被挟持URL,攻击者会修改302重定向的参数,将网站重定向到色情网站以及钓鱼网站或者诈骗网站,通常情况下在SEO权重里面,用到302重定向的网站会被搜索引擎认为是非法引用用来干扰搜索结果,通常情况下会被降权处罚。Nginx配置301重定向下面修改配置文件 server { #监听80端口 listen 80; #网站虚拟主机名 server_name www.123test.com; #location为访问的目录代理,/为域名后面不需要携带目录名 #假设是/test,那下面的curl测试就需要改成http://www.123test.com/test才可以访问到 location / { #这里使用return 301方式跳转到baidu #301的方式共有三种,这种是比较常用的一种方式 return 301 https://baidu.com; #默认文档,这里可要可不要 index index.html index.htm; } } #测试使用命令 curl http://www.123test.com本次使用域名来自前面文章做实验使用的域名,需要改hosts文件测试截图 Nginx设置302重定向修改配置文件 server { listen 80; server_name www.123test.com; location / { return 302 https://baidu.com; index index.html index.htm; } } #因为302和301的配置文件差不多,配置文件不做解释,直接跳过到下面测试环节使用curl http://www.123test.com测试是否能正常跳转
2022年12月10日
8 阅读
0 评论
0 点赞
1
2
3