2022年9月27日星期二

R-Bot 项目

R-Bot项目  简单使用

建立窗口:
screen -S arm

恢复窗口:
screen -r arm

Linux一键部署/更新:
wget -O gz_client_bot.tar.gz https://github.com/semicons/java_oci_manage/releases/latest/download/gz_client_bot.tar.gz && tar -zxvf gz_client_bot.tar.gz --exclude=client_config && tar -zxvf gz_client_bot.tar.gz --skip-old-files client_config && chmod +x sh_client_bot.sh && bash sh_client_bot.sh

重启运行:
bash sh_java_oci.sh

启动或重启:
bash sh_client_bot.sh

2022年9月25日星期日

解决Ubuntu无法升级systemd到新版本

系统提示有软件包需要更新,但运行升级命令时提示,无法完成升级

下列软件包的版本将保持不变:

  libnss-systemd libpam-systemd libsystemd0 libudev1 systemd systemd-sysv systemd-timesyncd udev


解决办法:

1-添加源:

sudo add-apt-repository ppa:ubuntu-security-proposed/ppa

2-获取更新:

sudo apt update

3-安装systemd相关软件包:

sudo apt install libnss-systemd libpam-systemd libsystemd0 libudev1 systemd systemd-sysv udev


相关命令延申

删除 apt-key:

sudo apt-key list

会出现这样:

/etc/apt/trusted.gpg

--------------------

pub   rsa2048 2011-08-19 [SC] [有效至:2024-06-14]

      573B FD6B 3D8F BC64 1079  A6AB ABF5 BD82 7BD9 BF62

uid           [ 未知 ] nginx signing key <signing-key@nginx.com>


正如你在上面的输出中所看到的,那串长的(40 个字符)十六进制值是仓库密钥。如果你希望 APT 包管理器停止信任该密钥,只需使用以下命令将其删除:

删除想删除的

sudo apt-key del "573B FD6B 3D8F BC64 1079  A6AB ABF5 BD82 7BD9 BF62"

或者,仅指定最后 8 个字符:

sudo apt-key del 73C62A1B

完成!仓库密钥已被删除。运行以下命令更新仓库列表:

sudo apt update


添加PPA源的命令为:

sudo add-apt-repository ppa:user/ppa-name

示例:sudo add-apt-repository ppa:ubuntu-security-proposed/ppa

添加完成!运行以下命令更新仓库列表:

 sudo apt-get update


删除命令格式则为:

sudo add-apt-repository -r ppa:user/ppa-name

示例:sudo add-apt-repository -r ppa:ubuntu-security-proposed/ppa

删除完成!运行以下命令更新仓库列表:

 sudo apt-get update

Debian或Ubuntu系统如何使用 fail2ban 防止恶意破解

fail2ban 可以有效的防止 ssh 暴力密码破解攻击. 对于公网中开放ssh端口的服务器安全至关重要.

以下教程为最小可用方式, 也是最实用的方式, 即在使用 ssh 账户和密码登录的情况下, 防止ssh暴力破解.

Ubuntu/Debian 安装:

首先更新和升级服务器,

sudo apt-get update
sudo apt-get upgrade

安装fail2ban:

sudo apt install -y fail2ban

使用以下命令启动并启用该服务:

sudo systemctl start fail2ban                # 启动fail2ban
sudo systemctl status fail2ban              # 查看fail2ban 是否正常启动 
sudo systemctl enable fail2ban             # 允许fail2ban 开机启动
sudo systemctl enable fail2ban             # 允许fail2ban 开机启动
sudo service fail2ban stop                    # fail2ban 停止
sudo service fail2ban restart                 # fail2ban 重启

配置jail.local 文件:

创建一个新配置文件jail.local,它将覆盖jail.conf中的任何同类设置.
同时将监视/var/log/auth.log,

使用以下命令创建配置文件, 

sudo vim /etc/fail2ban/jail.local 

在此新文件中,粘贴以下内容:

[sshd]               
enabled = true # 启用规则
port = 22 # 将SSH端口设置为22
filter = sshd # 使用fail2ban sshd过滤器,
logpath = /var/log/auth.log # 记录 log 在这个文件里
maxretry = 10 # 将最大重试次数设置为10, 超过就 ban 它的 ip

重新启动fail2ban:

sudo systemctl restart fail2ban

通过命令 sudo systemctl status fail2ban 查看服务运行状态: 如下反馈表示正常运行

root@ubuntu:~# sudo systemctl status fail2ban
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/lib/systemd/system/fail2ban.service; disabled; vendor preset: enabled)
Active: active (running) since Sun 2022-09-25 09:03:35 UTC; 10s ago
Docs: man:fail2ban(1)
Main PID: 8733 (fail2ban-server)
Tasks: 3 (limit: 9429)
Memory: 10.2M
CPU: 80ms
CGroup: /system.slice/fail2ban.service
└─8733 /usr/bin/python3 /usr/bin/fail2ban-server -xf start


使用命令 sudo vim /etc/fail2ban/jail.local 修改配置文件并检查是否设置正确.

全部设置完毕
如果有机器试图通过SSH登录您的Ubuntu服务器,并且失败了三次,那么将通过iptables阻止其IP地址阻止它们进入。

取消禁止的IP:

可以使用以下命令取消已被自动禁止的IP地址:

sudo fail2ban-client set sshd unbanip IP_ADDRESS    
# IP_ADDRESS是已被禁止的IP地址

更多:

要了解更多信息, 可输入以下命令

man fail2ban
# 提供了fail2ban可以执行的操作的完整概述

2022年9月22日星期四

设置AutoCAD程序作为dwg文件的默认打开程序

 

  选中dwg文件,右键>打开方式>选择 C:\Program Files\Common Files\Autodesk Shared\AcShellEx\AcLauncher.exe 这个程序,并用该程序作为默认打开方式。


如果dwg文件选择AutoCAD Application打开的话,那么每次打开一个dwg都会打开一个drawing 1 的文件,而且,可能打开dwg文件后只有drawing1的形文件,AutoCAD Application是AutoCAD的主程序acad.exe的显示名称,画图时用到的就是它,而AutoCAD DWG Launcher是AutoCAD安装包带的一个插件AcLauncher.exe的显示名称,主要是提供预览效果,用该程序作为默认打开方式打开程序时,显示的即为打开的DWG图形文件。





2022年9月21日星期三

Chromium 内核浏览器开启多线程下载

多线程下载可以有效提高下载速度(前提是服务器没有限制链接数),原理很简单,就是把一个文件分割为几份,然后同时下载,这样下载速度也因此可以提高。

开启方法:
Chrome 浏览器,地址栏输入并回车:chrome://flags/#enable-parallel-downloading
Edge 新版浏览器,地址栏输入并回车:edge://flags/#enable-parallel-downloading
将默认的 Default 改为 Enabled,然后重启浏览器即可开启。
找到parallel-downloading这个选项,选择Enabled允许,然后重启浏览器。

2022年9月18日星期日

使用cloudflare加速二级域名(Cloudflare Saas 接入CNAME)

使用cloudflare加速二级域名(Cloudflare Saas 接入CNAME)

一、功能简介

CloudFlare中一个完全接入的域名即为一个zone,点进去包括套餐、安全等等都是针对这一主域名配置的。官方SaaS功能针对的是你服务的客户,开放这项功能允许使用他们自己的域名直接附加在你的zone里,享受你zone下包含的安全、加速等功能。  官方公告:https://blog.cloudflare.com/waf-for-saas/

说起来可能不是很直白,这里举个应用场景的例子:

应用场景1

example.com一级域名无法长期通过NS接入了CF(NS服务器可以临时修改为CF服务器地址将域名接入CF,接入后需要再次改回原服务地址,如使用使cloudflare作为DDNS服务存在不稳定必须使用国内的DDNS服务商的情况),但二级域名b.example.com需要接入CF;此时可以通过SaaS功能实现1.b.example.com/2.c.example.com等直接附加在example.com这个临时添加的域名zone下,二级域名通过CNAME指向CF的节点。简而言之,可以通过这项功能,实现二级域名的CNAME接入cloudflare服务

二、配置接入


1-订阅CloudFlare for SaaS

打开一个域名,选择【SSL/TLS】下的【自定义主机名】,点击【启用CloudFlare for SaaS】后根据指示绑定外币卡或者PayPal,订阅CloudFlare for SaaS功能。
Cloudflare更改了Cloudflare for SaaS的收费策略,每个账户可以有100个域名免费额度
对于普通用户来说够用了。

激活页面中文翻译比较滞后,从英文的可以看到免费额度已经进行更新,可以放心使用。
开通 Cloudflare for SaaS 服务,需要CF账户绑定信用卡。如果没有信用卡或担心风险的话,可以通过微信易贝卡来绑定。
2-接入前准备
      以NS方式接入Cloudflare的域名A(例如example.com),随便的域名都行,仅用作设置回退源服务器,不对外显示,一个一级域名作为一个
zone,后续操作都在该zone下; 
      在仅有一个域名的情况域名下接入Cloudflare后便可以更改NS服务器地址回原有的地址(此时域名解析依然由原有的服务提供商解析)。

3-开始接入

进入域名下的面板,新建一个A记录解析作为回退源,命名为b,即二级域名b.example.com,IP地址要填真正想访问的地址(想接入的地址),CDN 状态(小黄云)打开 。

4-设置源站

选择承载的域名 zone 点进去,依然是【SSL/TLS】下的【自定义主机名】,首先要设置附加上域名的源站。在这之前要在承载的域名zone中设置一个子域名作为源站的来源,比如b.example.com

面板进入SSL/TLS——自定义主机名,在源服务器框填入我们刚才新加的A记录域名b.example.com ,点击【增加回退源】,会显示:回退源状态(初始化),刷新页面变成:回退源状态(有效)。

SaaS这里的源站叫回退源,它会同步这个子域名设置的源站作为后续在此接入域名的源站,非NS接入的源站地址为 b.example.com加cdn.cloudflare.net 组合,
即b.example.com.cdn.cloudflare.net,二级域名需要CNAME指向该地址或该地址解析的IP地址。

5-添加自定义主机名

点击【添加自定义主机名】,输入你要添加的未在CF接入的子域名,建议直接选择TXT验证。

6-验证域名所有权

添加完成后,需要前往example.com的域名服务商设置,添加上2条TXT类型的解析,一条是证书验证一条是主机名验证。,解析生效后10分钟左右即可验证通过,到此这个SaaS域名就正确的添加到了你的zone中并接入了CF。

7-设置SaaS域名解析

添加进去的SaaS域名,CF并不会给你提供明确的CNAME供指向。到域名解析服务商域名设置中CNAME解析b.example.com指向到你刚刚设置的源站域名对应的地址,比如b.example.com.cdn.cloudflare.net,其他的配置比如分线路解析、自选IP就可以按照自己的喜好去设置了。

添加其他二级域名到域名下的DNS面板进行添加记录,需要注意的是二级域名仅支持添加指向到A记录或AAAA记录,无法使用CNAME解析。

其他的二级域名解析服务商处可以CNAME解析到b.example.com地址简化设置,由b.example.com再次提供解析地址。

三、应用示例

每个人的需求场景不同,我简单说一下个人的用法。

example.com的域名设置里,使用A记录分别解析2条线路给b.example.com,
一条境外,一条境内,
境外线路对应的值就是我们CF的回退源地址 b.example.com
亦可直接使用A记录解析b.example.com.cdn.cloudflare.net对应的IPV4地址以及IPV6地址,
境内线路对应的值就是在国内解析b.example.com.cdn.cloudflare.net时的IP地址地址,
境外线路对应的值就是境外解析b.example.com.cdn.cloudflare.net时的IP地址地址,
这样就可以互不干扰的提供全球服务了,简单分线路的功能一般域名服务商都有免费提供。
该方法可以优选服务IP。



Cloudflare HTTP流量可以使用的回源端口如下:
80、8080、8880、2052、2082、2086、2095

Cloudflare HTTPS流量可以使用的回源端口如下:
443、2053、2083、2087、2096、8443

2022年9月5日星期一

Linux中iptables 防火墙设置规则永久保存

 永久保存 iptables 防火墙规则

您需要安装iptables-persistent将在重新启动时自动恢复 iptables 的软件包。

sudo apt install iptables-persistent

如果您选择,它将分别为 IPv4 和 IPv6创建现有的 iptables 规则并将其保存到/etc/iptables/rules.v4/etc/iptables/rules.v6保存。

无论何时更改iptables的规则,都应该使用iptables-save命令将其保存到文件中,以便在重新启动后使更改保持不变。

对于 IPv4 iptables(使用最广泛的场景):

sudo iptables-save -f /etc/iptables/rules.v4

对于 IPv6 iptables:

sudo iptables-save -f /etc/iptables/rules.v6

请注意,每次对系统上的 iptables 进行更改时,都需要运行上述两行命令。它基本上将当前活动的 iptables 规则复制到指定的文件中。

恢复到您上次保存它们时的状态:

sudo netfilter-persistent reload

使用cat 命令显示保存的文件 :

sudo cat /etc/iptables/rules.v4
sudo cat /etc/iptables/rules.v6

此外,要删除持久性 iptables 规则,您只需打开相应的/etc/iptables/rules.v*文件并手动删除包含所有不需要的规则的行。

示例:放行8888端口

iptables -I INPUT -p 协议 -m 协议 --dport 端口 -j ACCEPT   入站规则
iptables -I INPUT -p 协议 -m 协议 --dport 端口 -j ACCEPT   出站规则

ipv4:
iptables -I INPUT -p tcp --dport 8888 -j ACCEPT
iptables -I OUTPUT -p tcp --sport 8888 -j ACCEPT
ipv6:
ip6tables -I INPUT -p tcp --dport 8888 -j ACCEPT
ip6tables -I OUTPUT -p tcp --sport 8888 -j ACCEPT

针对这2条命令进行一些讲解吧 
-A 参数就看成是添加一条 INPUT 的规则 
-p 指定是什么协议 我们常用的tcp 协议,当然也有udp 例如53端口的DNS 
到时我们要配置DNS用到53端口 大家就会发现使用udp协议的 
而 –dport 就是目标端口 当数据从外部进入服务器为目标端口 
反之 数据从服务器出去 则为数据源端口 使用 –sport 
-j 就是指定是 ACCEPT 接收 或者 DROP 不接收

选 项 功 能 
-A 添加防火墙规则 
-D 删除防火墙规则 
-I 插入防火墙规则 
-F 清空防火墙规则 
-L 列出添加防火墙规则 
-R 替换防火墙规则 
-Z 清空防火墙数据表统计信息 
-P 设置链默认规则

开放所有端口

sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F

关闭所有端口

关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放。
下面是命令实现:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
再用命令 iptables -L -n 查看 是否设置好, 好看到全部DROP了。

临时关闭iptables,重启后恢复开启:

service iptables stop
service ip6tables stop

删除iptables:

apt-get purge netfilter-persistent

开启为:

apt-get install netfilter-persistent

强制删除并重启

rm -rf /etc/iptables && reboot

查看规则是否生效,命令:

IPV4:
iptables -L
IPV6:
ip6tables -L

删除规则

首先我们要知道 这条规则的编号,每条规则都有一个编号。
通过 iptables -L -n --line-number 可以显示规则和相对应的编号。

num target prot opt source destination
1 DROP tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
2 DROP tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
3 DROP tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
多了 num 这一列, 这样我们就可以看到刚才的规则对应的是编号2,那么我们就可以进行删除了。

iptables -D INPUT 2

上述示例为删除INPUT链编号为2的规则。

iptables -D OUTPUT 2

上述示例为删除OUTPUT链编号为2的规则。

再 iptables -L -n 查看一下,发现规则已经被清除了。

开放指定端口范围:

一条命令就可以了
入站:
iptables -I INPUT -p tcp --dport 500:800 -j ACCEPT
ip6tables -I INPUT -p tcp --dport 500:800 -j ACCEPT
出站:
iptables -I OUTPUT -p tcp --sport 500:800 -j ACCEPT
ip6tables -I OUTPUT -p tcp --sport 500:800 -j ACCEPT
一、 500:800 表示500到800之间的所有端口
二、 :800 表示800及以下所有端口
三、 500: 表示700以及以上所有端口

连续设置示例:开放500-800端口出入站并永久生效 (全部复制仅执行一次)
iptables -I INPUT -p tcp --dport 500:800 -j ACCEPT && 
ip6tables -I INPUT -p tcp --dport 500:800 -j ACCEPT &&
iptables -I OUTPUT -p tcp --sport 500:800 -j ACCEPT &&
ip6tables -I OUTPUT -p tcp --sport 500:800 -j ACCEPT &&
sudo iptables-save -f /etc/iptables/rules.v4 &&
sudo iptables-save -f /etc/iptables/rules.v6

禁ipv4&ipv6 ping

sudo iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
sudo ip6tables -I INPUT -p icmpv6 --icmpv6-type echo-request -j DROP

解除ipv4&ipv6 ping

sudo iptables -D INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
sudo ip6tables -D INPUT -p icmpv6 --icmpv6-type echo-request -j DROP

通过命令iptables -L查看已有规则

注意,需要注释掉( # )此下规则,上述配置才有效。
这条策略的配置如下:

-A INPUT -p icmp -j ACCEPT

配置文件路径:
(/etc/iptables/rules.v4)
(/etc/iptables/rules.v6)

2022年9月4日星期日

使用dd对linux系统进行备份与还原操作

 神奇的ghost的原理是什么呢?不就是数据复制吗?

Linux下的dd命令不就是最强大的数据复制工具!

查看磁盘分区情况
lsblk
查询硬盘使用情况

df -h 

为避免网络中断,以screen 窗口运行,

创建后台执行窗口      恢复后台窗口           结束后台窗口

screen -S dd           screen -r dd       screen -S dd -X quit

多个同名的screen会话,可以执行:screen -ls 查看对应会话的session_id,然后使用screen -D -r + session_id 进行恢复。
screen -D -r session_id
退出指定会话 screen -X -S + session id quit


查看查看/dev/sdb磁盘上的所有分区的尺寸和布局情况。
-u,让start和end中数字的单位是512字节,也就是一个sector扇区的大小,
示例:(红色字体即 fdisk命令中最大的end数 )
fdisk -u -l /dev/sdb

root@22-4-200537:~# fdisk -u -l /dev/sdb
Disk /dev/sdb: 47 GiB, 50465865728 bytes, 98566144 sectors
Disk model: BlockVolume
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 1048576 bytes
Disklabel type: gpt
Disk identifier: C955719C-61F9-47FC-AFBC-6B8424F213B9
Device      Start           End      Sectors    Size Type
/dev/sdb1 206848 98566110 98359263 46.9G Linux filesystem
/dev/sdb15 2048 204800 202753 99M EFI System

镜像的命令格式说明
执行:
dd bs=512 count=[fdisk命令中最大的end数+1] if=/dev/sda of=/root/ubuntu.img

使用 dd 和 gzip 生成压缩的镜像文件的执行命令:
dd bs=512 count=[fdisk命令中最大的end数+1] if=/dev/sda | gzip -6 > /root/ubuntu.img.gz

这样,就可以把需要的分区数据全部copy到ubuntu.img或ubuntu.img.gz文件中,
还原用LiveCD引导进入打开命令行,

备份系统盘镜像.img.gz到/root目录下面,压缩和不压缩的执行示例命令:
dd的count=参数98566120(只要比上面的加1就可以了,这里加了个10)

未压缩:
dd   bs=512  count=98566120 if=/dev/sdb  of/=/root/ubuntu.img.gz
压缩:
dd   bs=512  count=98566120 if=/dev/sdb | gzip -6 > /root/ubuntu.img.gz


gzip参数:
-c 表示输出到stdout
-d 表示解压缩
-1 表示最快压缩
-9 表示最好压缩
默认使用的是-6压缩级别。

注意:
不要直接在计算机上用本地磁盘启动系统后执行dd命令生成本地磁盘的镜像。而应该使用livecd启动计算机。
因计算机运行时会对系统盘产生大量写操作。 直接对运行中的系统盘生成的镜像,在恢复到其他硬盘上时,很可能会无法启动!

未压缩镜像格式还原硬盘:
dd if=/root/ubuntu.img.gz of=/dev/sda

压缩镜像还原格式还原硬盘:执行下列命令:
gzip -dc /root/ubuntu.img.gz | dd of=/dev/sdb


创建挂载目录把和sda挂载到LIVE系统下
mkdir /mnt/sda
mkdir /mnt/sdb

挂载成功
mount /dev/sdb1 /mnt/sdb
mount /dev/sda1 /mnt/sda

取消挂载
umount mnt/sdb

查看dd备份的进度
重新打开一个Shell,然后执行如下命令,即可输出一次进度信息
killall -s SIGUSR1 dd

重新打开一个Shell,然后执行如下命令,即可每3秒输出一次进度信息
watch -n 3 pkill -USR1 -x dd

2022年9月1日星期四

Ubuntu升级或安装Nginx最新稳定版(官方源安装)

卸载旧版本:

#卸载软件
sudo apt purge nginx   

#自动清理一些程序   
sudo apt autoremove nginx      

 #删除不需要的配置文件

sudo apt autoclean
dpkg -l |grep ^rc|awk ‘{print $2}’ |sudo xargs dpkg -P nginx     

#更新本地缓存文件及系统

sudo apt update && sudo apt upgrade && sudo apt dist-upgrade      

需要添加Nginx官方源才能下载Nginx的最新稳定版本

添加nginx_signing.key:
获取nginx_signing.key文件,
sudo wget http://nginx.org/keys/nginx_signing.key

sudo wget https://mirrors.nju.edu.cn/nginx/keys/nginx_signing.key
添加,
sudo apt-key add nginx_signing.key
删除nginx_signing.key,
rm -f nginx_signing.key

在 /etc/apt/sources.list.d 文件夹中新建nginx.list文件写入下面对应的两行:
jammy 为操作系统版本代号,要根据系统来选择 , 详见
查看操作系统版本命令:
lsb_release -c
官方源:
Ubuntu:
deb https://nginx.org/packages/ubuntu/ jammy nginx
deb-src https://nginx.org/packages/ubuntu/ jammy nginx

debian:
deb https://nginx.org/packages/debian/ bullseye nginx
deb-src https://nginx.org/packages/debian/ bullseye nginx

国内源:
Ubuntu22.04:
deb https://mirrors.nju.edu.cn/nginx/ubuntu/ jammy nginx
deb-src https://mirrors.nju.edu.cn/nginx/ubuntu/ nginx
debian11:
deb https://mirrors.nju.edu.cn/nginx/debian/ bullseye nginx
deb-src https://mirrors.nju.edu.cn/nginx/debian/ bullseye nginx
或debian12:
deb https://mirrors.nju.edu.cn/nginx/debian/ bookworm nginx
deb-src https://mirrors.nju.edu.cn/nginx/debian/ bookworm nginx

最后输入以下命令进行安装:
sudo apt update
如有以下报错,
W: https://nginx.org/packages/ubuntu/dists/jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

执行以下命令后再次更新源:
sudo cp /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d

开始安装 nginx
sudo apt install nginx

输入nginx -v查看安装版本:

新版nginx的/etc/nginx/下的目录结构:

/etc/nginx
├── conf.d
│ ├── default.conf
├── fastcgi_params
├── mime.types
├── modules -> /usr/lib/nginx/modules
├── nginx.conf
├── scgi_params
└── uwsgi_params

主要配置文件存放于/etc/nginx/conf.d 目录

重新加载配置并重启

nginx -t #测试配置语法
nginx -s reload #重新加载配置
sudo systemctl restart nginx #重启Nginx

nginx.pid” failed 修复:

/usr/sbin/nginx -c /etc/nginx/nginx.conf

安装PHP支持,Nginx不具有处理PHP文件的内置支持。将使用PHP-FPM(“ fastCGI进程管理器”)来处理PHP文件。

sudo apt install php-fpm

安装完成后,FPM服务将自动启动。要检查服务状态,请运行

systemctl start php7.4-fpm
systemctl status php7.4-fpm
systemctl start php8.1-fpm
systemctl status php8.1-fpm

或使用/etc/init.d 启动:
{start|stop|status|restart|reload|force-reload}
/etc/init.d/php8.1-fpm start
/etc/init.d/php8.1-fpm restart

默认静态配置

server {
listen 80;
server_name localhost;
location / {
root /var/www/html/;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html/;
}
}

默认PHP配置

server {
listen 80;
server_name localhost;
# 启用HTTPS
# listen 2443 ssl;
# ssl_protocols TLSv1.3;
# ssl_certificate /etc/ssl/zs/fullchain.crt;
# ssl_certificate_key /etc/ssl/zs/private.pem;
location / {
root /var/www/html/;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
}
error_page 404 /404.html;
location = /404.html {
root /var/www/html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html/;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}

TCP/UDP端口转发:
/etc/nginx/nginx.conf文件末尾添加配置代码:

stream {
include /etc/nginx/conf.d/*.stream;
}

conf.d目录下,添加*.stream后缀的配置文件,server

#TCP示例:
server {
listen 90;
listen [::]:90;
proxy_connect_timeout 5s;
proxy_timeout 20s;
proxy_pass localhost:89;
}

#UDP示例:
server {
listen 90 udp reuseport;
listen [::]:90 udp reuseport;
proxy_timeout 20s;
proxy_pass localhost:89;
}

-