设为首页 收藏本站
查看: 858|回复: 0

[经验分享] nginx.conf-linux网络服务搭建

[复制链接]

尚未签到

发表于 2018-11-15 11:34:40 | 显示全部楼层 |阅读模式
  user  nginx;        #user是个主模块指令,指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行
  worker_processes  1;
  #worker_processes是个主模块指令,指定了Nginx要开启的进程数。每个Nginx进程平均耗费10M~12M内存。根据经验,一般指定一个进程足够了,
  如果是多核CPU,建议指定和CPU的数量一样的进程数即可。
  error_log  logs/error.log;
  #error_log  logs/error.log  notice;
  #error_log  logs/error.log  info;
  #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
  #pid        logs/nginx.pid;   #全局错误日志及PID文件
  events {            #events指令是设定Nginx的工作模式及连接数上限。
  use epoll;
  #use是个事件模块指令,用来指定Nginx的工作模式
  #有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是标准的工作模式,
  #kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平台上,而kqueue用在BSD系统中。对于Linux系统,epoll工作模式是首选。
  worker_connections  1024;
  #单个后台worker process进程的最大并发链接数
  单个进程最大连接数(最大连接数=连接数*进程数)
  }
  http {
  include       mime.types;   #设定mime类型,类型由mime.type文件定义
  default_type  application/octet-stream;   #默认文件类型
  #default_type属于HTTP核心模块指令,这里设定默认类型为二进制流,也就是当文件类型未定义时使用这种方式,例如在没有配置PHP环境时,
  #  Nginx是不予解析的,此时,用浏览器访问PHP文件就会出现下载窗口
  log_format  main.log  '$remote_addr - $remote_user [$time_local] "$request" '
  #log_format是Nginx的HttpLog模块指令,用于指定Nginx日志的输出格式。main为此日志输出格式的名称,可以在下面的access_log指令中引用
  #                  '$status $body_bytes_sent "$http_referer" '
  #                  '"$http_user_agent" "$http_x_forwarded_for"';
  access_log  logs/access.log  main.log;
  client_header_buffer_size 32k;         #用于指定来自客户端请求头的headerbuffer大小。对于大多数请求,1K的缓冲区大小已经足够,如果自定义了消息头或有更大的Cookie,可以增加缓冲区大小。这里设置为32K
  #large_client_header_buffers;        #用来指定客户端请求中较大的消息头的缓存最大数量和大小, “4”为个数,“128K”为大小,最大缓存量为4个128K
  #sendfile        on#;                #指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为 on,
  如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
  #tcp_nopush     on;
  keepalive_timeout  65;    #长连接超时时间,单位是秒
  client_header_timeout 50; #设置客户端请求头读取超时时间。如果超过这个时间,客户端还没有发送任何数据,Nginx将返回“Request time out(408)”错误。
  client_body_timeout 50;   #设置客户端请求主体读取超时时间。如果超过这个时间,客户端还没有发送任何数据,Nginx将返回“Request time out(408)”
  错误,默认值是60。
  autoindex on;             #开启目录列表访问,合适下载服务器,默认关闭
  send_timeout 50;          #指定响应客户端的超时时间。这个超时仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,
  Nginx将会关闭连接
  tcp_nopush on;            #防止网络阻塞
  tcp_nodelay on;           #防止网络阻塞
  gzip  on;                 #开启gzip压缩
  gzip_min_length 1k;       #最小压缩文件大小
  gzip_buffers 4 16k;       #压缩缓冲区
  gzip_http_version 1.0;    #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
  gzip_comp_level 2;        #压缩等级
  #缩比最小,处理速度最快;9 压缩比最大,传输速度快,但处理最慢,也比较消耗cpu资源
  gzip_types text/plain application/x-javascript text/css application/xml;
  #压缩类型,默认就已经包含textml,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。
  #gzip_vary on;
  gzip_vary on;          #和http头有关系,加个vary头,给代理服务器用的,有的浏览器支持压缩,有的不支持。因此,为避免浪费不支持的也压缩,需要根据客户端的HTTP头来判断,是否需要压缩。
  提供两段gzip压缩代码,供大家学习参考。
  #zip_vary   #让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过Nginx压缩的数据
  #limit_zone crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用
  upstream web{
  server 192.168.122.91:80;
  server 192.168.122.92:80;
  }
  #upstream是Nginx的模块,等同于lvs、这个模块通过调度算法来实现后端服务器的负载均衡
  # 轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响。
  # Weight:指定轮询权值,Weight值越大,分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下。
  # ip_hash:每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题。
  # fair:比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应
  时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块。
  # url_hash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。
  Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx 的hash软件包。
  #在HTTP Upstream模块中,可以通过server指令指定后端服务器的IP地址和端口,同时还可以设定每个后端服务器在负载均衡调度中的状态。常用的状态有:
  # down:表示当前的server暂时不参与负载均衡。
  # backup:预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
  # max_fails:允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
  # fail_timeout:在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。
  #注意 当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是weight和backup。
  server {
  listen       80;
  server_name  localhost;
  location / {
  proxy_pass http://web;
  root html;
  index index.html;
  proxy_set_header Host $host;
  client_max_body_size 5K;      #允许客户端请求的最大单文件字节数
  client_body_buffer_size 128k;  #缓冲区代理缓冲用户端请求的最大字节数,
  proxy_connect_timeout 90;      #nginx跟后端服务器连接超时时间(代理连接超时)
  proxy_send_timeout 90;         #后端服务器数据回传时间(代理发送超时)
  proxy_read_timeout 90;         #连接成功后,后端服务器响应时间(代理接收超时)
  proxy_buffer_size 4k;          #设置代理服务器(nginx)保存用户头信息的缓冲区大小
  proxy_buffers 4 32k;           #proxy_buffers缓冲区,网页平均在32k以下的设置
  proxy_busy_buffers_size 64k;   #高负荷下缓冲大小(proxy_buffers*2)
  proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
  #所有jsp的页面均交由tomcat或resin处理
  location ~ .(jsp|jspx|do)?$ {
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://127.0.0.1:8080;
  }
  #所有静态文件由nginx直接读取不经过tomcat或resin
  location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
  { expires 15d; }
  location ~ .*.(js|css)?$
  { expires 1h; }
  }
  #charset koi8-r;
  #access_log  logs/host.access.log  main;
  #        location / {
  #            root   html;
  #            index  index.html index.htm;
  #        }
  #error_page  404              /404.html;
  # redirect server error pages to the static page /50x.html
  #
  error_page   500 502 503 504  /50x.html;
  location = /50x.html {
  root   html;
  }
  # proxy the PHP scripts to Apache listening on 127.0.0.1:80
  #
  #location ~ \.php$ {
  #    proxy_pass   http://127.0.0.1;
  #}
  # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
  #
  location ~ \.php$ {
  root           html;
  fastcgi_pass   127.0.0.1:9000;
  fastcgi_index  index.php;
  fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
  include        fastcgi_params;
  }
  # deny access to .htaccess files, if Apache's document root
  # concurs with nginx's one
  #
  #location ~ /\.ht {
  #    deny  all;
  #}
  }
  # another virtual host using mix of IP-, name-, and port-based configuration
  #
  #server {
  #    listen       8000;
  #    listen       somename:8080;
  #    server_name  somename  alias  another.alias;
  #    location / {
  #        root   html;
  #        index  index.html index.htm;
  #    }
  #}
  # HTTPS server
  #
  #server {
  #    listen       443;
  #    server_name  localhost;
  #    ssl                  on;
  #    ssl_certificate      cert.pem;
  #    ssl_certificate_key  cert.key;
  #    ssl_session_timeout  5m;
  #    ssl_protocols  SSLv2 SSLv3 TLSv1;
  #    ssl_ciphers  HIGH:!aNULL:!MD5;
  #    ssl_prefer_server_ciphers   on;
  #    location / {
  #        root   html;
  #        index  index.html index.htm;
  #    }
  #}
  }


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-635391-1-1.html 上篇帖子: nginx + php 安装与整合 下篇帖子: 源码nginx+php
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表