記事ディレクトリ
1つは、Nginxのバージョン番号を非表示にする
(1)Nginxバージョン番号を非表示にする方法
1.実稼働環境では、セキュリティの脆弱性の漏洩を防ぐために、Ngnxのバージョン番号を非表示にする必要があります
2.表示方法
-
フィドラーツールを使用して、WindowsクライアントでNginxバージョン番号を表示します
-
Centosシステムで
curl -I
Nginxバージョン番号を表示するには、「URL」コマンドを使用します
3.nginxのバージョン番号を非表示にする方法
-
構成ファイルの方法を変更する
-
ソースコードメソッドを変更する
(2)、Nginxバージョン番号設定コマンドを非表示
方法1:
Nginx構成ファイルのserver_tokensオプションの値をオフに設定します
vim /usr/local/nginx/conf/nginx.conf
http {
include mime.types;
default_type application/octet-stream;
server_tokens off; ##添加,关闭版本号
}
systemctl restart nginx
curl -I http://192.168.200.50/ ##查看版本号
または
方法2:
ソースファイルを変更し、再コンパイルしてインストールします
vim /opt/nginx-1.12.0/src/core/nginx.h
#define nginx_version 1012000
#define NGINX_VERSION "1.0.0" #将原始的1.12.0修改为1.0.0
#define NGINX_VER "IIS" NGINX_VERSION #将原始的Nginx修改为IIS
#重新编译安装
cd /opt/nginx-1.12.0
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
make && make install
#将方法一中关闭的版本号重新打开
vim /usr/local/nginx/conf/nginx.conf
http {
include mime.types;
default_type application/octet-stream;
server_tokens on; #打开
#重启服务
systemctl restart nginx.service
#查看版本号是否隐藏
curl -I http://192.168.200.50/
2つ目は、ユーザーとグループを変更する
vim /usr/local/nginx/conf/nginx.conf
user nginx nginx; #将前面的#注释掉,然后修改用户与组为nginx
worker_processes 1;
systemctl restart nginx.service
ps aux | grep nginx #查看用户与组是否修改成功
3、キャッシュ時間を設定します
http {
include mime.types;
default_type application/octet-stream;
server_tokens on;
......
location / {
root html;
index index.html index.htm;
}
location ~ \.(gif|jpg|jepg|bmp|ico)$ {
#复制上面4行并修改
root html;
expires 1d; #设置缓存时间为1天
}
cd /usr/local/nginx/html/ #需要添加张图片在nginx首页中
[root@localhost html]#ls
50x.html error.png.0 game.jpg.0
error.png game.jpg index.html
使用浏览器直接访问game.jpg图片
http://192.168.200.50/game.jpg
四、丸太の切断
ログをカットするには、独自のスクリプトを作成する必要があります
vim /opt/fengge.sh
#!/bin/bash
#rizhi fengge
day=$(date -d "-1 day" "+%Y%m%d") #显示前一天时间
logs_path="/var/log/nginx"
pid_path="/usr/local/nginx/logs/nginx.pid"
[ -d $logs_path ] || mkdir -p $logs_path #创建日志文件目录
mv /usr/local/nginx/logs/access.log ${
logs_path}/gcc.com-access.log-$day #移动并重命名日志文件
kill -USR1 $(cat $pid_path) #重建新日志文件
find $logs_path -mtime +30 | xargs rm -rf #删除30天之前的日志文件
chmod +x /opt/fengge.sh
/opt/fengge.sh
ls /var/log/nginx/
ls /usr/local/nginx/logs/access.log
crontab -e #设置定时任务进行日志的分割收集
0 1 * * * /opt/fengge.sh
または、スクリプトは次のように書くこともできます
補足:
Linuxオペレーティングシステムでは、各ファイルには多くの時間パラメータがあり、そのうち3つ、つまりctime、atime、mtimeがより重要です。
- ctime(ステータス時間):
ファイルのアクセス許可または属性が変更されると、この時間は更新されます。ctimeは作成時間ではなく、変更時間に似ています。この時間は、ファイルの属性またはアクセス許可が更新されたときにのみ更新されます。ただし、内容が変更された場合、今回は更新されません。 - atime(accesstime):
このファイルが使用されると、この時間は更新されます。 - mtime(変更時間):
ファイルのコンテンツデータが変更されると、この時間が更新され、権限または属性が変更されても、mtimeは変更されません。これはctimeとの違いです。
5、接続タイムアウト
HTTPにはKeepAliveモードがあり、要求の処理後にTCP接続を開いたままにするようにWebサーバーに指示します。クライアントから他の要求を受信した場合、サーバーは別の接続を確立せずにこの閉じられていない接続を使用します。
KeepAliveは一定期間開いたままであり、この期間中はリソースを占有します。過度の使用はパフォーマンスに影響します。
vim /usr/local/nginx/conf/nginx.conf
http {
include mime.types;
default_type application/octet-stream;
server_tokens on;
......
keepalive_timeout 65 180;
client_header_timeout 80;
client_body_timeout 80;
systemctl restart nginx.service
keepalive timeout:
KeepAliveのタイムアウトを指定します。各TCP接続の持続時間を指定すると、サーバーはこの時間の後に接続を閉じます。
Nginxのデフォルト値は65秒です。一部のブラウザは最大で60秒しか保持しないため、60秒に設定できます。0に設定すると、キープアライブ接続が禁止されます。
2番目のパラメーター(オプション)は、応答ヘッダーKeep-Aliveの時間値を指定します:timeout = time。このヘッダーにより、一部のブラウザーは接続をアクティブに閉じることができるため、サーバーは接続を閉じる必要がありません。このパラメーターがないと、NginxはKeep-Alive応答ヘッダーを送信しません。
client_header_timeout:
クライアントが完全な要求ヘッダーをサーバーに送信するためのタイムアウト期間。クライアントが指定された時間内に完全な要求ヘッダーを送信しない場合、NginxはHTTP 408(要求がタイムアウト)を返します。
6、プロセスの数を変更します
cat /proc/cpuinfo | grep -c "physical id" #查看CPU核数
ps aux | grep nginx #查看nginx主进程中包含几个子进程
vim /usr/local/nginx/conf/nginx.conf
user nginx nginx;
worker_processes 2; #修改为核数相同或者2倍
worker_cpu_affinity 01 10; #设置每个进程由不同cpu处理,进程数配为2时为0001、0010、0100、1000
systemctl restart nginx.service
7、Webページの圧縮を構成する
vim /usr/local/nginx/conf/nginx.conf
gzip on; #将改行注释取消掉开启gzip压缩功能,并添加下面内容
gzip_min_length 1k; #最小压缩文件大小
gzip_buffers 4 64k; #压缩缓冲区,大小为4个64k缓冲区
gzip_http_version 1.1; #压缩版本(默认为1.1,前端如果是squid2.5请使用1.0)
gzip_comp_level 6; #压缩比率
gzip_types text/plain application/x-javascript text/css image/jpg image/jpeg image/png image/gif application/xml text/javascript application/x-httpd-php application/javascript application/json; #压缩类型,表示哪些网页文档启用压缩功能
gzip_vary on; #支持前端缓存服务器存储压缩页面
cd /usr/local/nginx/html/ #提前将game.jpg图片上传到该目录下
vim index.html
<p><em>Thank you for using nginx.</em></p>
<img src="game.jpg"> #添加此行
</body>
systemctl restart nginx.service
8.盗難防止チェーン
ホットリンクマシンを構成する
yum install -y httpd
vim /var/www/html/index.html
<html><body><h1>IT WORKS!</h1>
<img src="http://www.gcc.com/game.jpg"/>
</body></html>
echo "192.168.200.40 www.accp.com" >> /etc/hosts
echo "192.168.200.50 www.gcc.com" >> /etc/hosts
systemctl restart httpd
ソースホストを構成します(盗難防止リンク)
vim /usr/local/nginx/conf/nginx.conf
location ~* \.(gif|jpg|jepg|bmp|ico)$ {
valid_referers *.gcc.com gcc.com;
if ( $invalid_referer ) {
rewrite ^/ http://www.gcc.com/error.png;
}
}
systemctl restart nginx
~* \. (jpglgiflswf)s :这段正则表达式表示匹配不区分大小写,以.jpg或.gif或.swf结尾的文件;
valid referers :设置信任的网站,可以正常使用图片;后面的网址或者域名: referer中包含相关字符串的网址;
语句:如果链接的来源域名不在valid referers所列出的列表中, sinvalid referer为1,则执行后面的操作,即进行重写或返回403页面。
現時点では、ホットリンクマシン上の画像をソースホストからホットリンクすることはできません
9、fpmパラメーターの最適化
vim /usr/local/php/etc/php-fpm.conf
pid = run/php-fpm.pid
vim /usr/local/php/etc/php-fpm.d/www.conf
-----96行------
pm = dynamic #fpm进程启动方式,动态的
-----107行-----
pm.max children = 20 #fpm进程启动的最大进程数-
------112-------
pm.start_servers = 5 #动态方式下启动时默认开启的进程数,在最小和最大之间
------117行-------
pm.min_spare_servers = 2 #动态方式下最小空闲进程数
------122行-------
pm.max_spare_servers = 8 #动态方式下最大空闲进程数
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid` #重启php-fpm
netstat -anpt | grep 9000