草庐IT

Nginx优化与防盗链

刀穗随风 2023-03-28 原文

文章介绍

  Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。本文跟大家分享nginx的基础优化和安全。大家可以先看下另一篇nginx配置​​nginx配置​

详情介绍

  Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器 ,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。

  nginx一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好

服务器:
   Nginx作为负载均衡服务:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。
   处理静态文件,索引文件以及自动索引;打开文件描述符缓冲。
   无缓存的反向代理加速,简单的负载均衡和容错。
   FastCGI,简单的负载均衡和容错。
   模块化的结构。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCG或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待。
   支持 SSL 和 TLSSNI。

代码:
   Nginx代码完全用C语言从头写成,已经移植到许多体系结构和操作系统,包括:Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows。Nginx有自己的函数库,并且除了zlib、PCRE和OpenSSL之外,标准模块只使用系统C库函数。而且,如果不需要或者考虑到潜在的授权冲突,可以不使用这些第三方库。

代理服务器:
   作为邮件代理服务:Nginx 同时也是一个非常优秀的邮件代理服务(最早开发这个产品的目的之一也是作为邮件代理服务器),​last.fm 描述了成功并且美妙的使用经验。
   Nginx 是一个安装非常的简单、配置文件非常简洁(还能够支持perl语法)、Bug非常少的服务。Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。


实验配置

拓扑图:

推荐步骤:
  • 在 Centos01 上安装 Nginx,设置网站根目录/www 使用域名 www.suifeng.com 访问
  • 在 Centos02 上安装 DNS ,使用域名www.suifeng.com访问 Centos01,Centos03 使用 yum 安装apache 使用域名 www.sakura.com 访问
  • 在 www.suifeng.com 域名的网站隐藏 Nginx 版本、查看 Nginx 管理用户、设置网页缓存、配置Nginx 日志切割、设置超时时间
  • 在 www.suifeng.com 网站配置防盗链防止 www.sakura.com 盗 www.suifeng.com 的连接
实验步骤:

一,在Centos01上安装安装Nginx,设置网站根目录/www 使用域名www.l.com访问

1,在centos01上安装nginx依赖

1)挂载系统盘

2)挂载系统光盘配置本地yum仓库

[root@centos ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos ~]# ls /mnt/
CentOS_BuildTag GPL
LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages
RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata
TRANS.TBL
[root@centos ~]# rm -rf /etc/yum.repos.d/CentOS-* //删除系统网络源
[root@centos ~]# ls /etc/yum.repos.d/
local.repo
[root@centos ~]# cat /etc/yum.repos.d/local.repo //配置本地yum仓库

[local]
name=centos7
baseurl=file:///mnt
enabled=1
gpgcheck=0

3)安装依赖程序

[root@centos ~]# yum -y install pcre-devel zlib-devel

4)创建管理nginx用户

[root@centos ~]# useradd -M -s /sbin/nologin nginx

2,配置安装nginx服务

1)切换云计算光盘

[root@centos ~]# umount /mnt/ //卸载目前挂载光盘

[root@centos ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载

2)解压缩配置nginx

[root@centos ~]# tar zxf /mnt/nginx-1.6.0.tar.gz -C /usr/src/
[root@centos ~]# cd /usr/src/nginx-1.6.0/
[root@centos nginx-1.6.0]# ./configure \
--prefix=/usr/local/nginx \ //安装位置
--user=nginx \ //nginx管理用户
--group=nginx \ //管理组
--with-http_stub_status_module //配置监控模块

3)编译安装nginx

[root@centos nginx-1.6.0]# make && make install

4)优化nginx命令检查配置文件

[root@centos ~]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/

3,设置nginx服务器网站根目录设置主页修改配置文件

1)创建网站根目录设置主页

[root@centos ~]# mkdir /www
[root@centos ~]# echo "www.suifeng.com" > /www/index.html

2)修改nginx主配置文件

[root@centos ~]# cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak //备份配置文件预防配置出错
[root@centos ~]# vim /usr/local/nginx/conf/nginx.conf

3)检查nginx主配置文件是否出错

4)启动nginx服务监听端口

[root@centos ~]# nginx

二,在Centos02上安装DNS使用域名访问Centos01上使用域名www.suifneg.com访问,Centos03使用yum安装apache使用域名www.sakura.com访问

1,安装DNS服务设置开机自动自启

1)挂载系统光盘

[root@centos02 ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos02 ~]# ls /mnt/
CentOS_BuildTag GPL
LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages
RPM-GPG-KEY-CentOS-Testing-7
EULA
isolinux repodata
TRANS.TBL

2)安装DNS服务

3)设置开机自启

[root@centos02 ~]# systemctl enable named

2,修改主配置文件和区域配置文件

1)修改DNS主配置文件

[root@centos02 ~]# vim /etc/named.conf

2)检查文件是否出错

[root@centos02 ~]# named-checkconf /etc/named.conf

3)修改区域配置文件

[root@centos02 ~]# vim /var/named/suifeng.com.zone

[root@centos02 ~]# vim /var/named/sakura.com.zone

4)检查文件是否出错

4,在Centos03上使用yum安装apache设置网站主页,客户端访问Nginx和Apache

1)挂载系统光盘

[root@centos03 ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos03 ~]# ls /mnt/
CentOS_BuildTag GPL
LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages
RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata
TRANS.TBL

2)配置本地yum源

[root@centos03 ~]# rm -rf /etc/yum.repos.d/CentOS-*
[root@centos03 ~]# ls /etc/yum.repos.d/
local.repo
[root@centos03 ~]# cat /etc/yum.repos.d/local.repo
[local]
name=centos7
baseurl=file:///mnt
enabled=1
gpgcheck=0

3)安装apache服务设置开机自启

[root@centos03 ~]# yum -y install httpd
[root@centos03 ~]# systemctl enable httpd

4)设置网站主页启动服务

[root@centos03 ~]# echo "www.sakura.com" > /var/www/html/index.html

5)启动服务查看服务运行状态

[root@centos03 ~]# systemctl start httpd

6)客户端访问nginx

7)客户端访问apache

三,在Nginx网站隐藏Nginx版本、查看Nginx管理用户、设置网页缓存、配置Nginx日志切割、设置超时时间、配置防盗链

1,在Nginx网站服务器配置将Nginx版本伪装位IIS不显示不版本号,查看管理Nginx进程用户

1)配置修改nginx源代码伪装版本信息

[root@centos ~]# vim /usr/src/nginx-1.6.0/src/core/nginx.h

[root@centos ~]# vim /usr/src/nginx-1.6.0/src/http/ngx_http_header_filter_module.c

2)关闭nginx

[root@centos ~]# killall nginx
[root@centos ~]# killall nginx
nginx: no process found

3)重新配置编译安装nginx

[root@centos ~]# cd /usr/src/nginx-1.6.0/
[root@centos nginx-1.6.0]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx --group=nginx \
--with-http_stub_status_module
[root@centos nginx-1.6.0]# make && make install

4)启动nginx

[root@centos nginx-1.6.0]# nginx

5)验证伪装的nginx版本

6)修改nginx主配置文件隐藏版本

[root@centos nginx-1.6.0]# vim /usr/local/nginx/conf/nginx.conf

7)重启服务

[root@centos nginx-1.6.0]# killall nginx
nginx: no process found
[root@centos nginx-1.6.0]# nginx

8)客户端验证

8)管理nginx服务进程用户

2,在nginx网站服务器配置网页缓存时间

1)修改nginx主配置文件

[root@centos ~]# vim /usr/local/nginx/conf/nginx.conf

2)客户端访问验证

3,配置nginx日志切割

1)创建目录存储切割日志后数据

[root@centos ~]# mkdir /nginx_log

2)创建日志切割脚本

[root@centos ~]# vim /opt/nginx_log_bak.sh
#!/bin/bash
# Filename: fenge.sh
d=$(date -d "-1 day" "+%Y%m%d")
logs_path="/nginx_log/"
pid_path="/usr/local/nginx/logs/nginx.pid"
[ -d $logs_path ] || mkdir -p $logs_path
mv /usr/local/nginx/logs/www.suifeng.com.access.log
${logs_path}/www.suifeng.com^Baccess.log-$d
kill -USR1 $(cat $pid_path)
find $logs_path -mtime +30 |xargs rm -rf
[root@centos ~]# chmod +x /opt/nginx_log_bak.sh //脚本添加执行权限

3)设置计划任务周期备份nginx日志,每间隔两分钟备份一次日志

[root@centos ~]# crontab -e
*/2 * * * * /opt/nginx_log_bak.sh

4)查看生成日志

[root@centos ~]# ls /nginx_log/
www.suifeng.com?access.log-20230211

4,设置nginx网站服务器保持时间和进程优化

1)修改nginx主配置文件支持保持时间和进程优化

[root@centos ~]# vim /usr/local/nginx/conf/nginx.conf

2)重启nginx

[root@centos ~]# killall nginx
[root@centos ~]# killall nginx
nginx: no process found
[root@centos ~]# nginx

3)查看nginx进程

5,配置nginx压缩数据

1)修改主配置文件支持压缩数据

[root@centos ~]# vim
/usr/local/nginx/conf/nginx.conf

2)重新启动nginx服务

[root@centos ~]# killall nginx
[root@centos ~]# killall nginx
nginx: no process found
[root@centos ~]# nginx

3)查看配置的压缩数据

6,配置nginx防盗链

1)上传错误图片

[root@centos www]# ls
error.png index.html logo.jpg

2)访问nginx图片

3)设置apache盗用nginx链接

[root@centos03 ~]# vim /var/www/html/index.html
www.sakura.com<br/>
<img src="http://www.suifeng.com/logo.jpg"/>

4)访问apache

5)修改nginx主配置文件防止盗链接

[root@centos www]# vim /usr/local/nginx/conf/nginx.conf

6)重启nginx服务

[root@centos www]# killall nginx
[root@centos www]# killall nginx
nginx: no process found
[root@centos www]# nginx

7)验证盗链接




“博主如有不对请指出,虚心接受指导,感谢!!!”


有关Nginx优化与防盗链的更多相关文章

  1. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  2. ruby-on-rails - 如何用不同的用户运行nginx主进程 - 2

    A/ctohttp://wiki.nginx.org/CoreModule#usermaster进程曾经以root用户运行,是否可以以不同的用户运行nginxmaster进程? 最佳答案 只需以非root身份运行init脚本(即/etc/init.d/nginxstart),就可以用不同的用户运行nginxmaster进程。如果这真的是你想要做的,你将需要确保日志和pid目录(通常是/var/log/nginx&/var/run/nginx.pid)对该用户是可写的,并且您所有的listen调用都是针对大于1024的端口(因为绑定(

  3. Ruby 缺少常量表达式优化? - 2

    我希望Ruby的解析器会进行这种微不足道的优化,但似乎并没有(谈到YARV实现,Ruby1.9.x、2.0.0):require'benchmark'deffib1a,b=0,1whileb由于这两种方法除了在第二种方法中使用预定义常量而不是常量表达式外是相同的,因此Ruby解释器似乎在每个循环中一次又一次地计算幂常数。是否有一些Material说明为什么Ruby根本不进行这种基本优化或只在某些特定情况下进行? 最佳答案 很抱歉给出了另一个答案,但我不想删除或编辑我之前的答案,因为它下面有有趣的讨论。正如JörgWMittag所说,

  4. ruby-on-rails - 优化读取数据库和写入csv文件 - 2

    我正在尝试从数据库中读取大量单元格(超过100.000个)并将它们写入VPSUbuntu服务器上的csv文件。碰巧服务器没有足够的内存。我正在考虑一次读取5000行并将它们写入文件,然后再读取5000行,等等。我应该如何重构我当前的代码以使内存不会被完全消耗?这是我的代码:defwrite_rows(emails)File.open(file_path,"w+")do|f|f该函数由sidekiqworker调用:write_rows(user.emails)感谢您的帮助! 最佳答案 这里的问题是,当您调用emails.each时,

  5. ruby-on-rails - Websocket-rails 不适用于 Nginx 和 Unicorn 的生产环境 - 2

    我有带有gemwebsocket-rails0.7的Rails3.2应用程序。在开发机上,一切正常在生产环境中,我使用Nginx/1.6作为代理服务器,Unicorn作为http服务器。Thin用于独立模式(在https://github.com/websocket-rails/websocket-rails/wiki/Standalone-Server-Mode之后)。nginx配置:location/websocket{proxy_passhttp://localhost:3001/websocket;proxy_http_version1.1;proxy_set_headerUp

  6. ruby - 没有 nginx 的 Puma - 同一 IP 上的多个 ruby​​ 应用程序 :PORT - 2

    Nginx在生产中的重要性通常基于它为慢速客户端提供服务的能力;在RESTfulAPI的设置中,它似乎是生产堆栈的一个不必要的层,尤其是Puma(不像广泛使用的unicorn可以处理nginx工作)。Pumacanallowmultipleslowclientstoconnectwithoutrequiringaworkertobeblockedontherequesttransaction.Becauseofthis,Pumahandlesslowclientsgracefully.HerokurecommendsPumaforuseinscenarioswhereyouexpect

  7. ruby-on-rails - Foreman无法启动Nginx,但我可以手动启动。为什么? - 2

    我目前正在运行Foreman在暂存(Ubuntu)上,一旦我开始工作,就会切换到使用upstart。我的Procfile.staging看起来像这样:nginx:sudoservicenginxstartunicorn:bundleexecunicorn-c./config/unicorn.rbredis:bundleexecredis-serversidekiq:bundleexecsidekiq-v-C./config/sidekiq.yml我可以使用以下方法成功启动nginx:$sudoservicenginxstart然而,当我运行$foremanstart时,当其他三个进程成

  8. 软约束、硬约束、Minimum Snap的轨迹优化方法 - 2

    文章目录前言约束硬约束的轨迹优化Corridor-BasedTrajectoryOptimizationBezierCurveOptimizationOtherOptions软约束的轨迹优化Distance-BasedTrajectoryOptimization优化方法前言可以看看我的这几篇Blog1,Blog2,Blog3。上次基于MinimumSnap的轨迹生成,有许多优点,比如:轨迹让机器人可以在某个时间点抵达某个航点。任何一个时刻,都能数学上求出期望的机器人的位置、速度、加速度、导数。MinimumSnap可以把问题转换为凸优化问题。缺点:MnimumSnap可以控制轨迹一定经过中间的

  9. ruby-on-rails - 负载测试期间 Unicorn CPU 使用率激增,优化方法 - 2

    我对为我的RubyonRails3.1.3应用优化我的Unicorn设置的方法很感兴趣。我目前正在高CPU超大实例上生成14个工作进程,因为我的应用程序在负载测试期间似乎受CPU限制。在模拟负载测试中,每秒大约20个请求重放请求,我的实例上的所有8个内核都达到峰值,盒子负载飙升至7-8个。每个unicorn实例使用大约56-60%的CPU。我很好奇可以通过哪些方式对其进行优化?我希望能够每秒将更多请求汇集到这种大小的实例上。内存和所有其他I/O一样完全正常。在我的测试过程中,CPU越来越低。 最佳答案 如果您受CPU限制,您希望使用

  10. 美团外卖搜索基于Elasticsearch的优化实践 - 2

    美团外卖搜索工程团队在Elasticsearch的优化实践中,基于Location-BasedService(LBS)业务场景对Elasticsearch的查询性能进行优化。该优化基于Run-LengthEncoding(RLE)设计了一款高效的倒排索引结构,使检索耗时(TP99)降低了84%。本文从问题分析、技术选型、优化方案等方面进行阐述,并给出最终灰度验证的结论。1.前言最近十年,Elasticsearch已经成为了最受欢迎的开源检索引擎,其作为离线数仓、近线检索、B端检索的经典基建,已沉淀了大量的实践案例及优化总结。然而在高并发、高可用、大数据量的C端场景,目前可参考的资料并不多。因此

随机推荐