Nginx 反向代理配置

反向代理作用

隐藏服务器信息 -> 保证内网的安全,通常将反向代理作为公网访问地址,web服务器是内网,即通过nginx配置外网访问web服务器内网

找到配置文件 nginx.conf

域名或IP反向代理

server {
    listen       80;
    server_name  www.123.com;# 服务器IP地址或绑定域名

    location / { # 访问80端口后的所有路径都转发到 proxy_pass 配置的ip或域名中
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        proxy_pass http://www.456.com:789; # 配置反向代理的ip地址和端口号 【注:url地址需加上http:// 或 https://】
    }
}

二级目录反向代理

server {
    listen       80;
    server_name  www.123.com;# 服务器IP地址或绑定域名
 
    location ^~ /aaa {  # ^~/aaa 表示匹配前缀为aaa的请求
        proxy_pass  http://www.456.com:789/aaa/;  
            # 注:proxy_pass的结尾有/, -> 效果:会在请求时将/aaa/*后面的路径直接拼接到后面
  
            # proxy_set_header作用:设置发送到后端服务器(上面proxy_pass)的请求头值  
            # 【当Host设置为 $http_host 时,则不改变请求头的值;
            #   当Host设置为 $proxy_host 时,则会重新设置请求头中的Host信息;
            #   当为$host变量时,它的值在请求包含Host请求头时为Host字段的值,在请求未携带Host请求头时为虚拟主机的主域名;
            #   当为$host:$proxy_port时,即携带端口发送 ex: $host:8080 】
        proxy_set_header Host $host; 
  
        proxy_set_header X-Real-IP $remote_addr; # 在web服务器端获得用户的真实ip 需配置条件①    【 $remote_addr值 = 用户ip 】
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 在web服务器端获得用户的真实ip 需配置条件②
        proxy_set_header REMOTE-HOST $remote_addr;
        # proxy_set_header X-Forwarded-For $http_x_forwarded_for; # $http_x_forwarded_for变量 = X-Forwarded-For变量
    }

    location ^~ /bbb/ { # ^~/bbb/ 表示匹配前缀为bbb/后的请求
        proxy_pass  http://www.456.com:789/bbb/; 
  
        proxy_set_header Host $proxy_host; # 改变请求头值 -> 转发到对应域名才会成功
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-NginX-Proxy true;
    }
}

参考文章:https://segmentfault.com/a/1190000019894251

在Ubuntu上安装和使用ClamAV进行病毒查杀

ClamAV 是用于检测木马,病毒,恶意软件,广告软件,rootkit和其他恶意威胁的开源防病毒引擎。

ClamAV的某些功能包括:

  • 内置支持各种存档格式,包括Zip,Tar,Gzip,Bzip2,OLE2,Cabinet,CHM,BinHex,SIS等。
  • 对几乎所有邮件文件格式的内置支持
  • 对使用UPX,FSG,Petite,NsPack,wwpack32,MEW,Upack压缩并用SUE,Y0da Cryptor等混淆的ELF可执行文件和可移植可执行文件的内置支持;
  • 内置支持流行的文档格式,包括Microsoft Office和Mac Office文件,HTML,RTF和PDF。
  • 支持多种签名语言,例如基于哈希的签名匹配,通配符,布尔逻辑和任何以字节码语言编写的自定义规则。

ClamAV包括一个多线程扫描程序守护程序,用于按需文件扫描和自动签名更新的命令行实用程序。它的主要用途之一是在邮件服务器上作为服务器端电子邮件病毒扫描程序。

在Ubuntu上安装和使用ClamAV进行病毒查杀

更新系统软件包缓存

首先,更新系统软件包缓存。

apt update

在Ubuntu 20.04上安装ClamAV

默认的Ubuntu 20.04存储库包含ClamAV的最新稳定发行版。您只需运行下面的命令即可简单地安装它及其实用程序。

apt install clamav clamav-daemon -y

更新ClamAV签名数据库

为了进行扫描,您需要更新的病毒数据库。有两种更新ClamAV数据库的选项:

  • clamav-freshclam:从Internet更新数据库。建议使用Internet访问。
  • Offline update 用于无法直接访问互联网的系统。

使用更新更新签名数据库 clamav-freshclam

如果可以访问互联网,则可以使用 clamav-freshclam 更新ClamAV病毒库。

要使用此方法,请停止 clamav-freshclam 服务(如果正在运行)并执行 freshclam,病毒数据库更新工具。

systemctl stop clamav-freshclam

然后更新病毒数据库;

freshclam

如果数据库是最新的,那么您可能会得到类似于以下的输出(否则,该命令将提取数据库更新)

Wed May  6 05:58:42 2020 -> ClamAV update process started at Wed May  6 05:58:42 2020
Wed May  6 05:58:42 2020 -> daily.cvd database is up to date (version: 25803, sigs: 2358438, f-level: 63, builder: raynman)
Wed May  6 05:58:42 2020 -> main.cvd database is up to date (version: 59, sigs: 4564902, f-level: 60, builder: sigmgr)
Wed May  6 05:58:42 2020 -> bytecode.cvd database is up to date (version: 331, sigs: 94, f-level: 63, builder: anvilleg)

接下来,开始 clamav-freshclam 服务,因此它会随时在后台更新签名数据库。

systemctl start clamav-freshclam

确保已启用该服务以在系统启动时运行;

systemctl is-enabled clamav-freshclam
enabled

freshclam 下载ClamAV数据库,CVD,并将其放在下面, /var/lib/clamav/

ls /var/lib/clamav/
bytecode.cvd daily.cvd main.cvd

离线数据库更新

如果您的系统无法访问互联网,只需从以下位置下载CVD ClamAV下载页 并将它们放在 /var/lib/clamav

将下载的CVD放置在ClamAV数据库上后,请确保相应地更改所有权和权限。

chown clamav:clamav /var/lib/clamav/*.cvd
chmod 644 /var/lib/clamav/*.cvd

重新启动ClamAV守护程序;

systemctl restart clamav-daemon

要通过私有本地镜像更新数据库,请查看如何打开 文档页面

Clamscan CLI选项和示例用法

Clamscan用于扫描文件和目录中是否有病毒。在手册页中,clamscan命令语法为:

clamscan [options] [file/directory/-]

下面说明了一些clamscan命令选项及其示例用法。

使用以下命令打印帮助信息 -h 要么 --help 选项。

clamscan -h

注意: 标有的选项 [=yes/no(*)] 可以选择后面跟随 =是 要么 =否。 如果在没有布尔参数的情况下调用它们,则扫描程序将假定为“是”。星号标记给定选项的默认内部设置。

扫描特定目录或文件;

clamscan /home/
clamscan /home/filename.docx

扫描结束时不显示摘要。

clamscan --no-summary /home/

仅打印受感染的文件(-i, --infected);

clamscan -i /

跳过打印OK文件(-o, --suppress-ok-results);

clamscan <strong>-o</strong> /home/

警惕病毒检测(--bell);

clamscan <strong>--bell</strong> -i /home

递归扫描目录(-r, --recursive)。

clamscan --bell -i <strong>-r</strong> /home

将扫描报告保存到FILE(-l FILE, --log=FILE);

clamscan --bell -i <strong>-r</strong> /home <strong>-l home-scan.txt</strong>

扫描文件中逐行列出的文件(-f FILE --file-list=FILE)。

clamscan -i <strong>-f /tmp/scan</strong>

删除受感染的文件(--remove[=yes/no(*)])。请注意,因为这会完全删除文件。

clamscan -r --remove /home/USER

将受感染的文件移至目录 (--move=DIRECTORY)。对于运行clamscan的用户或非特权用户,目录必须可写。

clamscan -r -i --move=/home/USER/infected /home/

将受感染的文件复制到目录中(–copy = DIRECTORY)。对于运行clamscan的用户或非特权用户,目录必须可写。

clamscan -r -i --copy=/home/USER/infected /home/

对于clamscan的各种用法,有很多选项可供选择。请教 man clamscan 更多细节。

ClamAV返回码

以下是ClamAV的退出返回代码。

  • 0:未发现病毒。
  • 1:发现病毒。
  • 2:发生了一些错误。

限制Clamscan CPU使用率

clamscan 可能会占用大量CPU资源,尤其是在扫描大型目录时。

要将clamscan CPU时间限制在一定水平,可以使用两种工具。

  • nice:降低clamscan的优先级(限制相对cpu时间)。
  • cpulimit:限制绝对的CPU时间。

要使用漂亮的命令,

nice -n 15 clamscan && clamscan -ir /

只要没有其他进程需要cputime,clamscan就会将其最大化。但是,一旦另一个具有更高优先级的进程需要cputime,clamscan就会丢失它。

使用cpulimit;

cpulimit -z -e clamscan -l 20 & clamscan -ir /

扫描整个根目录时,将clamscan cpu时间限制为15%。

进一步阅读

ClamAV用户手册

参考文章:https://zh.codepre.com/how-to-9177.html @代码日志

Ubuntu如何彻底卸载软件包?

apt-get的卸载相关的命令有remove/purge/autoremove/clean/autoclean等。具体来说:

apt-get purge / apt-get --purge remove

删除已安装包(不保留配置文件)。
如软件包a,依赖软件包b,则执行该命令会删除a,而且不保留配置文件

apt-get autoremove

删除为了满足依赖而安装的,但现在不再需要的软件包(包括已安装包),保留配置文件。

apt-get remove

删除已安装的软件包(保留配置文件),不会删除依赖软件包,且保留配置文件。

apt-get autoclean

APT的底层包是dpkg, 而dpkg 安装Package时, 会将 *.deb 放在 /var/cache/apt/archives/中,apt-get autoclean 只会删除 /var/cache/apt/archives/ 已经过期的deb。

apt-get clean

使用 apt-get clean 会将 /var/cache/apt/archives/ 的 所有 deb 删掉,可以理解为 rm /var/cache/apt/archives/*.deb

那么如何彻底卸载软件呢?
具体来说可以运行如下命令:

# 删除软件及其配置文件
apt-get --purge remove <package>
# 删除没用的依赖包
apt-get autoremove <package>
# 此时dpkg的列表中有“rc”状态的软件包,可以执行如下命令做最后清理:
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

当然如果要删除暂存的软件安装包,也可以再使用clean命令。

原文链接:https://blog.csdn.net/get_set/article/details/51276609