Nginx Configuration file

本贴最后更新于 2121 天前,其中的信息可能已经斗转星移

Install Nginx

yum -y install gcc* pcre-devel zlib-devel openssl-devel
useradd -M -s /sbin/nologin nginx   # nginx 运行用户
tar -zxf nginx*
./configure --prefix=/usr/local/nginx 
    --user=nginx  --group=nginx --with-http_stub_status_module --with-http_realip_module --with-http_addition_module 
    --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module 
    --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module 
    --with-http_stub_status_module --with-http_auth_request_module --with-pcre --with-mail --with-mail_ssl_module --with-http_spdy_module

    make
    make  install
    chkconfig nginx on

Start Scripts Path:/etc/init.d/

Document Descripton
user    nginx    nginx   #指定 Nginx 运行时的用户与组
worker_cpu_affinity 0001 0010 0100 1000;
#亲和力配置,让不同的进程使用不同的 CPU 核心,4核心4线程时可以使用以上的配置。
2核心使用01  10;2核心4线程为 01 10 01 10;
8核心8线程使用  00000001 00000010 00000100 00001000 00010000  00100000   01000000 10000000;
worker_processes  4;   #进程数,即处理器请求的进程,可设置为 CPU 的核心数或者  CPU 核心数的2倍 
error_log  logs/error.log  warn;
#全局错误日志定义类型,格式有[ debug|info|notice|warn|error|crit],一定要设置在warn以上的级别
pid      logs/nginx.pid;
#把进程号记录到文件之中
worker_rlimit_nofile 51200;
#系统打开文件的最大数,可用 cat /proc/sys/fs/file-max 查看,基本使用百分之60左右
events {
    use epoll; 
#采用网络 IO 模型,有select 与 epoll 可选,在大并发的情况下最优使用 epoll
    worker_connections  12800;
# #nginx最大连接数=worker连接数*worker进程数
}
http {
    server_tokens off;  
    #隐藏 Nginx 的版本号信息
    include       mime.types;
    #文件扩展名与文件类型映射表
    default_type  application/octet-stream;
    #默认文件类型
    server_names_hash_bucket_size 128;
    #服务器域名 hash 表大小
    server_names_hash_max_size 512;     
    #域名服务器的最大 hash 表大小
    client_header_buffer_size 4k;
    #客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求的头部大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得。
    large_client_header_buffers 8 128k;
    #设定客户请求头缓存
    client_max_body_size 8m;
    #设定通过nginx上传文件的大小
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    #设定日志 main 的格式
    access_log  logs/access.log  main;
    #全局访问日志
    sendfile        on;
    #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应     用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off
    autoindex   off;
    #开启目录列表访问,适合下载服务器,默认关闭
    tcp_nopush     on;
    #防止网络阻塞
    tcp_nodelay    on;
    #防止网络阻塞
    keepalive_timeout  120;
    #长连接超时时间,单位是秒

    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;
   # Fasecgi相关参数是为了改善网站的性能,减少资源占用,提高访问速度

#gzip模块设置
    #开启 gzip 压缩输出
    gzip  on;
    #最小压缩文件大小
    gzip_min_length 1k;
    #压缩缓存区
    gzip_buffers 4 16k;
    #压缩版本(默认为1.1,如果前端是squid 2.5 采用1.0)
    gzip_http_version 1.1;
    #压缩等级
    gzip_comp_level 2;
    #压缩类型,默认包含textml,所以下面就不用再写了,写上去也不有问题,但是会有一个warn
    gzip_types  text/plain application/x-javascript text/css application/xml;   # 安装目录下minme.types 里定义了压缩类型 
    #vary header支持。该选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存      经过Nginx压缩的数据。
    gzip_vary on;

Example

# 反向代理
location / {
  proxy_pass http://192.168.1.3:80;   # 通过proxy_pass将client的数据请求转发给后端 
}

# 负载调度
upstream qxfell_server {
         ip_hash;      #调度算法,默认 rr 轮训,hash常用语解决session共享的问题
         server 192.168.1.240:80    weight  1;
         server 192.168.1.241:80    weight  1;
         server 192.168.1.242:80    weight  1 backup;    
         #backup 表示机器处于热备状态,weight代表权重,权重越高代表使用越多
     }

# 在生产环境中需要设置一些信息,这样日志中能获取到真正的访问IP
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;    #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

#以下是一些反向代理的配置,可选。
proxy_set_header Host $host;
client_max_body_size 10m; #允许客户端请求的最大单文件字节数
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服务器传s

# 自带状态统计(监控会用到)
htpasswd  -c /usr/local/nginx/conf/confpasswd username #利用apache自带的htpasswd生成密码进行登录验证    
location /NginxStatus {
       stub_status on;
       access_log on;
       auth_basic "NginxStatus";
       auth_basic_user_file confpasswd;
}

# 虚拟主机
# 在 nginx 配置文件中的 http{} 中间的每一个 server{} 区域都相当于一个虚拟主机,
# 即创建多个虚拟主机即添加多个 server{} 区域即可。
# 注意的是每台虚拟主机之间如果使用相同端口必须通过不同域名区分,如果使用相同域名必须通过不同端口区分,也就是说必须保持独立性
# 例:
    server {
        listen       80;
        server_name  www.qxfell.com;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
       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://qxfell.com; 
                expires 1d;  
        }
        error_page   500 502 503 504  /50x.html;
        l。0ocation = /50x.html {
            root   html;
        }
    }

# https配置
server { 
    listen 80; 
    server_name   www.qxfell.com; 
    rewrite ^(.*)$ https://$host$1 permanent;   # 用户访问网址http重定向到https  还有另外几种方式 整理好一起更新
}  

server
  {
      listen 443; 
      server_name www.qxfell.com qxfell.com;
      ssl                  on; 
      ssl_certificate      /etc/nginx/cert/214234223453245.pem;  # 证书文件
      ssl_certificate_key  /etc/nginx/cert/346456456645663.key;
      ssl_session_timeout  5m; 
      ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
      ssl_ciphers  HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM; 
      ssl_prefer_server_ciphers   on; 
      access_log /var/log/nginx/www.qxfell.log main;

     location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
     }

Cut Logfile Scripts

  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    311 引用 • 546 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • bdFK3000

    我是在 angular 使 nginx
    nginx 好用..
    可以用在 component 間,交換 資訊..
    GOOD!!

  • 其他回帖
  • someone

    😋 yep

推荐标签 标签

  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖 • 1 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    75 引用 • 1737 回帖 • 3 关注
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 155 关注
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖 • 4 关注
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    62 引用 • 289 回帖 • 1 关注
  • GitLab

    GitLab 是利用 Ruby 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面操作公开或私有项目。

    46 引用 • 72 回帖 • 1 关注
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    198 引用 • 550 回帖
  • CongSec

    本标签主要用于分享网络空间安全专业的学习笔记

    1 引用 • 1 回帖 • 9 关注
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 364 关注
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 384 回帖 • 8 关注
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    85 引用 • 139 回帖 • 1 关注
  • CSDN

    CSDN (Chinese Software Developer Network) 创立于 1999 年,是中国的 IT 社区和服务平台,为中国的软件开发者和 IT 从业者提供知识传播、职业发展、软件开发等全生命周期服务,满足他们在职业发展中学习及共享知识和信息、建立职业发展社交圈、通过软件开发实现技术商业化等刚性需求。

    14 引用 • 155 回帖
  • Sym

    Sym 是一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)系统平台。

    下一代的社区系统,为未来而构建

    524 引用 • 4601 回帖 • 699 关注
  • 996
    13 引用 • 200 回帖 • 6 关注
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    944 引用 • 1459 回帖 • 17 关注
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    543 引用 • 672 回帖
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    71 引用 • 535 回帖 • 788 关注
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 615 关注
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 462 关注
  • GAE

    Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。

    14 引用 • 42 回帖 • 764 关注
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    96 引用 • 155 回帖 • 1 关注
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖 • 4 关注
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    230 引用 • 1454 回帖
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 52 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    286 引用 • 729 回帖
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    691 引用 • 535 回帖
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    107 引用 • 153 回帖