当前位置:首页 > CN2资讯 > 正文内容

windows服务器 nginx 域名

1天前CN2资讯

  相信看过我之前apache文章的朋友们,对服务优化也有了一个大概的了解,相比较而言,Nginx企业中应用的更多一些,因此今天也会详细阐述Nginx的优化,有人说,服务器不需要优化,开虚拟化,分分钟成倍增加并发量,但是网站服务器优化不仅仅是为了高并发而做,有些优化也涉及到了安全和控制,请大家耐心往下看,如果有哪里写的不明白你们可以评论,我基本每天都上线,会仔细思考大家的问题。

  首先提供Nginx主配置文件,大家可先参考了解一下

1 #user nobody; 2 worker_processes 1; 3 #error_log logs/error.log; 4 #error_log logs/error.log notice; 5 #error_log logs/error.log info; 6 #pid logs/nginx.pid; 7 events { 8 worker_connections 1024; 9 } 10 http { 11 include mime.types; 12 default_type application/octet-stream; 13 #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 14 # '$status $body_bytes_sent "$http_referer" ' 15 # '"$http_user_agent" "$http_x_forwarded_for"'; 16 #access_log logs/access.log main; 17 sendfile on; 18 #tcp_nopush on; 19 #keepalive_timeout 0; 20 keepalive_timeout 65; 21 #gzip on; 22 server { 23 listen 80; 24 server_name localhost; 25 #charset koi8-r; 26 #access_log logs/host.access.log main; 27 location / { 28 root html; 29 index index.html index.htm; 30 } 31 #error_page 404 /404.html; 32 # redirect server error pages to the static page /50x.html 33 # 34 error_page 500 502 503 504 /50x.html; 35 location = /50x.html { 36 root html; 37 } 38 # proxy the PHP scripts to Apache listening on 127.0.0.1:80 39 # 40 #location ~ \.php$ { 41 # proxy_pass http://127.0.0.1; 42 #} 43 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 44 # 45 #location ~ \.php$ { 46 # root html; 47 # fastcgi_pass 127.0.0.1:9000; 48 # fastcgi_index index.php; 49 # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; 50 # include fastcgi_params; 51 #} 52 # deny access to .htaccess files, if Apache's document root 53 # concurs with nginx's one 54 # 55 #location ~ /\.ht { 56 # deny all; 57 #} 58 } 59 # another virtual host using mix of IP-, name-, and port-based configuration 60 # 61 #server { 62 # listen 8000; 63 # listen somename:8080; 64 # server_name somename alias another.alias; 65 # location / { 66 # root html; 67 # index index.html index.htm; 68 # } 69 #} 70 # HTTPS server 71 # 72 #server { 73 # listen 443 ssl; 74 # server_name localhost; 75 # ssl_certificate cert.pem; 76 # ssl_certificate_key cert.key; 77 # ssl_session_cache shared:SSL:1m; 78 # ssl_session_timeout 5m; 79 # ssl_ciphers HIGH:!aNULL:!MD5; 80 # ssl_prefer_server_ciphers on; 81 # location / { 82 # root html; 83 # index index.html index.htm; 84 # } 85 #} 86 }

View Code

 一、隐藏版本号

(1)查看信息:由下列语句看到了nginx的版本号,我们的目的就是要隐藏它

1 [root@localhost ~]# curl -I http://127.0.0.1 2 HTTP/1.1 200 OK 3 Server: nginx/1.6.0 #隐藏后此项变为Server: nginx 4 Date: Thu, 10 Nov 2016 12:51:37 GMT 5 Content-Type: text/html 6 Content-Length: 612 7 Last-Modified: Thu, 10 Nov 2016 08:08:43 GMT 8 Connection: keep-alive 9 ETag: "58242b0b-264" 10 Accept-Ranges: bytes

(2)有两种方式隐藏版本号:第一种是修改主配置文件;第二种是在编译安装之前就修改源码;

  第一种方法:在http { 下添加server_tokens    off;

http {   server_tokens off;

如果php配置文件/usr/local/php5/etc/下的fastcgi的配置文件中配置了fastcgi_param SERVER_SOFTWARE选项,则编辑php-fpm配置文件,将fastcgi_param SERVER_SOFTWARE对应的值nginx-1.6.0修改为nginx;

  第二种方法:

  将下载完成Nginx源码包解压后,到源码目录/usr/src/nginx-1.6.0/src/core中找到nginx.h将版本信息修改后再编译安装

修改前

#define NGINX_VERSION "1.6.0" #define NGINX_VER "nginx/" NGINX_VERSION

修改后(修改为IIS服务器版本,做伪装)

#define NGINX_VERSION "1.1.1" #define NGINX_VER "IIS/" NGINX_VERSION

二、修改Nginx用户和组  

  Nginx进程运行时需要用户和组的支持,默认下使用nobody(所有人),为了防止攻击者拿到权限修改nginx,就要修改用户和组。

user  nginx  nginx;然后ps aux | grep nginx查看,master和worker两个进程中的其中一个worker进程(接收用户请求包的这个进程)的用户变为了nginx

三、配置Nginx网页缓存时间

  当Nginx将网页数据返回给客户端后,可设置缓存的时间,以方便在日后进行相同内容的请求时直接返回,以避免重复请求,加快了访问的速度,一般针对静态网页进行设置,对动态网页不用设置缓存时间,可在windows客户端中使用抓包工具fiddler查看网页缓存时间,配置后可在header里找到cache参数得到缓存时间

  设置方法:可根据特定需要在主配置文件的http段或者server段或者location段加入对特定内容的过期参数,例:

location ~ \.(gif|jpg|jpeg|png|bmp|ico)$ {    expires 1d; #缓存一天   };

四、日志切割

   随着Nginx运行时间的增加,产生的日志也会增加,为了方便掌握Nginx的运行状态,需要时刻关注Nginx日志文件,太大的日志文件对监控是一个大灾难,所以要定期进行日志文件的切割。Nginx没有类似Apache的cronlog日志分割处理的功能,但是,可以通过Nginx的信号控制功能的脚本来实现日志的自动切割,并将脚本加入到Linux的计划任务中,让脚本在每天的固定时间执行,比如每天晚上1点半执行脚本,这时我们老的日志文件就会被更名,然后生成一份新的日志文件来承载新的数据,便可实现日志分割功能。

日志分割脚本

1 #!/bin/bash 2 # Filename: 3 d=$(date -d "-1 day" "+%Y%m%d") 4 logs_path="/var/log/nginx" #我们的日志文件默认不存放这里,如果想把日志存在这里的话可以这么写 5 pid_path="/usr/local/nginx/logs/nginx.pid" 6 [ -d $logs_path ] || mkdir -p $logs_path #因为是逻辑或,所以判断有这个目录就不管,没有的话执行||后面的语句继续判断,于是就创建了这个目录 7 mv /usr/local/nginx/logs/access.log ${logs_path}/-access.log-$d #把原来的日志改名后放在了新目录下 8 kill -USER1 $(cat $pid_path) #在/usr/local/nginx/logs/下产生一个新的access.log文件 9 find $logs_path -mtime +30 | xargs rm -rf #检测下日志的修改时间是30天前的文件并删除掉

加入计划任务

~]#crontab -e 30 1 * * * source /opt/

五、设置连接超时

   在企业网站中,为了避免同一个客户长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间,但是这个连接超时时间还要根据实际情况设定,比如一个大文件传输需要30分钟,但是连接超时时间设定10分钟,这样这个文件就永远不能传送完。设置后可以使用fiddler工具查看connection参数。

设置方法:

根据需求可在http {}段,server{}段,location{}段中设置参数,以在http{}段设置为例:

1 修改 2 keepalive_timeout 65 ; #超时时间65秒 3 keepalive_timeout 65 180 ; #这个意思是超时时间180秒,以后面的为准 4 添加 5 Client_header_timeout 80; #指定等待客户端发送请求头的超时时间,超时提示408错误 6 Client_body_timeout 80; #设置请求体读超时时间,超时提示408错误

六、更改Nginx运行进程数

  Nginx默认只有两个进程,master和worker

配置方法:

worker_processes参数,一般设为CPU的个数或者核数,在高并发情况下可设置为CPU个数或者核数的2倍,比如2芯4核(2个物理cpu,每个cpu4核)CPU,一般情况给参数8,高并发就给16,运行进程数多一些,相应客户端访问请求时,Nginx就不会临时启动新的进程提供服务,减少了系统的开销,提升了服务速度。使用cat  /proc/cpuinfo来查看cpu信息,其中processor是核数,如果开虚拟机,这个数值是0,其实是1核的意思,physical是cpu个数,使用cat  /proc/cpuinfo | grep -c "phycical"语句查看,如果显示为2,那么我们就叫做2路cpu另外使用uname  -r可以看cpu版本。设置完可以ps -aux | grep worker看一下,发现worker进程数变多。

  默认情况,Nginx的多个进程可能更多的跑在一颗cpu上,可以分配不同的进程给不同的cpu处理,充分利用硬件多核多cpu,例如在一台4核物理服务器,可进行以下配置,将进程进行分配

全局配置中添加:

Worker_cpu_affinity  0001  0010  0100  1000

七、网页压缩

   基本上现在所有浏览器都支持解压缩网页的功能,当压缩的网页传到浏览器,浏览器会识别压缩文件,进行解压缩,只有一小部分浏览器不支持解压缩功能,因此配置网页压缩成为可能。

  Nginx的ngx_http_gzip_module压缩模块提供了对文件内容压缩的功能,允许nginx服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装,如果不想安装,在预配置的时候还要添加without加这个模块,具体卸载方式可以./configure --help时仔细查看。

  可在配置文件中加入相应的压缩功能参数对压缩性能进行优化

配置方法:http{}段

1 gzip on; #开启gzip压缩输出 2 gzip_min_length 1k; #用于设置允许压缩的网页最小字节数,意思是低于1k的网页就不需要压缩了 3 gzip_buffers 4 16k; #表示申请4个单位为16k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果,如果不设置的话,默认值是申请与原始数据大小相同的内存空间,这个功能的用法大致是这样的,作为管理员的你,观察你的网页压缩文件都是多大的,然后对这个值进行除以4的处理,把结果写在参数后面,这样就可以快速的相应客户请求了 4 zip_http_version 1.1; #用于设置识别http协议版本,默认是1.1,目前大部分浏览器已经支持gzip解压,但处理最慢,也比较消耗服务器cpu资源 5 gzip_comp_level 2; #用来指定gzip压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理速度最慢,使用默认即可 6 gzip_types test/plain test/javascript test/css test/xml application/x-javascript application/xml application/xml+rss; #压缩类型,是就对哪些网页文档启用压缩功能,也可以写多个,用空格隔开 7 gzip_vary on; #可以让前端的缓存服务器缓存经过gzip压缩的页面

 八、配置防盗链

1 location ~* \.(jpg|gif|png|swf)$ { 2 valid_referers none blocked *. ; 3 if ($invalid_referer) { 4 rewrite ^/ http://www./img/error.gif; 5   #return 403; 6 } 7   }

配置说明:

valid_referers :设置信任的网站,即能引用相应图片的网站

none :浏览器中referer为空的情况,就是直接在浏览器访问图片

blocked:referer不为空的情况,但是值被代理或防火墙删除了,这些值不以http://或者https://开头

后面的网址或者域名:referer中包含相关字符串的网址

if语句:如果链接的来源域名不在valid_referers所列出的列表中,$invalid_referer为1,则执行后面的操作,即进行重写或返回403页面

九、fpm参数优化

  Nginx的PHP解析功能实现如果是交由FPM处理的,为了提高PHP的处理速度,可对FPM模块进行参数的调整,配置文件php-fpm.conf

FPM优化参数讲解

pm : 使用哪种方式启动fpm进程,可以使static和dynamic,前者将产生固定数量的fpm进程,后者将以动态的方式产生fpm进程

pm.max_children : 静态方式下开启的fpm进程数

pm.start_servers : 动态方式下初始的fpm进程数量

pm.min_spare_servers : 动态方式下最小的fpm空闲进程数

pm.max_spare_servers : 动态方式下最大的fpm空闲进程数

注意:以上动静参数要根据服务器的内存与服务负载进行调整。

实际举例:(只需修改参数即可,不需手动添加)

pm = dynamic pm.start_servers = 5 pm.min_spare_servers = 2 pm.max_spare_servers = 8

 



    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/29960.html

    分享给朋友:

    “windows服务器 nginx 域名” 的相关文章

    中国电信CN2目录价格解析——助力企业高效互联

    在互联网经济飞速发展的今天,企业对网络的需求早已不限于简单的网页浏览和邮件传输。无论是跨国企业、互联网公司,还是电子商务平台,都需要一个稳定、高速、低延迟的网络环境来支撑业务的高效运转。而中国电信CN2作为国内领先的通信网络服务之一,凭借其优质的网络资源和服务,成为众多企业的首选解决方案。但对于初次...

    cn1cn2怎么算?从基础到高阶,快速掌握计算技巧

    cn1怎么算?从基础开始,轻松掌握计算技巧在学习过程中,尤其是涉及组合数学或排列组合的问题时,我们经常会遇到cn1和cn2的计算。虽然这些公式看似简单,但如果初次接触,可能会让人感到困惑。这篇文章将从基础开始,逐步解析cn1和cn2的计算方法,帮助你快速掌握。什么是cn1?我们需要明确什么是cn1。...

    广港IEPL专线:高效低延迟的跨国数据传输解决方案

    1.1 产品定义与特点 广港IEPL(International Ethernet Private Line)是一种专为跨国数据传输设计的国际专线服务。它的核心特点是大带宽和低延迟,特别适合那些对网络性能有高要求的企业和个人用户。广港IEPL的传输延迟极低,广港之间仅为3ms,深港之间更是低至2ms...

    OneTechCloud:高性价比VPS与独立服务器的最佳选择

    在了解OneTechCloud之前,我们先来探讨一下它的成立背景和发展历程。OneTechCloud,或称易科云,是一家自2019年就开始运营的国内小型主机商。虽然成立时间不久,但它迅速在市场上获得了一定的知名度。作为由中国团队经营的公司,OneTechCloud专注于提供海外VPS和独立服务器服务...

    Cloudflare 菲律宾节点:提升网络体验与速度的解决方案

    在当今数字化时代,每一个在线体验都至关重要。CloudFlare的出现,正是为了满足这一迫切的需求。作为全球知名的CDN(内容分发网络)服务提供商,CloudFlare不仅致力于加速网站的加载速度,也为用户提供安全防护服务。借助全球分布的节点,CloudFlare能够将用户请求快速而安全地送达目的地...

    选择日本不限流量VPS的最佳方案与优化建议

    日本不限流量VPS市场现状 日本的VPS市场,尤其是不限流量的产品,正迎来一个快速发展的阶段。随着互联网技术的进步,亚洲的网络环境发生了翻天覆地的变化。尤其是在日本,不限流量VPS因其连接速度快、数据中心服务优质而广受欢迎,对那些需要持续大流量的网站运营者来说,这可是一个无与伦比的选择。 我发现,随...