阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux中Nginx安装与配置详解

436次阅读
没有评论

共计 27156 个字符,预计需要花费 68 分钟才能阅读完成。

Linux 中 Nginx 安装与配置详解(CentOS-6.5:nginx-1.5.0)。

1 Nginx 简介
Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。其将源代码以类 BSD 许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011 年 6 月 1 日,nginx 1.0.4 发布。

2 Nginx 下载
1)pcre
    http://www.pcre.org/
    2)nginx
    http://nginx.org/

3)本次安装所有的软件资源包地址

Linux 公社资源站下载:

—————————————— 分割线 ——————————————

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2016 年资料 / 8 月 /10 日 /Linux 中 Nginx 安装与配置详解 /

下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm

—————————————— 分割线 ——————————————

3 Nginx 安装
3.1 安装前的准备
    1)准备 pcre-8.12.tar.gz。该文件为正则表达式库。让 nginx 支持 rewrite 需要安装这个库。
    2) 准备 nginx-1.5.0.tar.gz。该文件为 nginx 的 linux 版本安装文件。
    3)确保进行了安装了 linux 常用必备支持库。

Linux 中必备常用支持库的安装(CentOS-6.5)

在 CentOS 安装软件的时候,可能缺少一部分支持库,而报错。这里首先安装系统常用的支持库。那么在安装的时候就会减少很多的错误的出现。

# yum install -y gcc gdb strace gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs patch e2fsprogs-devel krb5-devel libidn libidn-devel openldap-devel nss_ldap openldap-clients openldap-servers libevent-devel libevent uuid-devel uuid mysql-devel

3.2 正则表达式库安装
    1)确保进行了安装了 linux 常用必备支持库。检查是否安装了 g ++、gcc。rpm -qa | grep gcc 之后需要出现 3 个包如下图所示。如果没有出现。需要安装 g ++、gcc。

    # yum install gcc-c++

Linux 中 Nginx 安装与配置详解

     2) 上传 pcre-8.12.tar.gz, nginx-1.5.0.tar.gz 到 /usr/local/src/nginx 目录下。
   
    3)解压 pcre-8.12.tar.gz
    # cd /usr/local/src/nginx
    # tar zxvf pcre-8.12.tar.gz
   
    4)进入解压后的目录
    # cd pcre-8.12
   
    5)配置
    #  ./configure
    6) 编译
    #  make
    7) 安装
    #  make install
   

3.3 Nginx 安装
    0) 创建用户 nginx 使用的 www 用户。
    # groupadd  www  #添加 www 组   
    # useradd -g  www www -s /bin/false  #创建 nginx 运行账户 www 并加入到 www 组,不允许 www 用户直接登录系统
   
    创建安装目录与日志目录
    a) 安装目录
    # mkdir /usr/local/nginx
    b) 日志目录
    # mkdir /data0/logs/nginx
    # chown www:www /data0/logs/nginx -R
   
    1) 判断系统是否安装了 zlib-devel。如果没有安装。使用
    # yum install -y zlib-devel

Linux 中 Nginx 安装与配置详解
   
    2) 解压
    # cd /usr/local/src/nginx
    # tar zxvf nginx-1.5.0.tar.gz
   
    3) 进入目录
    # cd nginx-1.5.0
   
    4) 配置。通常将软件安装在 /usr/local/ 目录下。
    # ./configure –user=www –group=www –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module –with-http_realip_module
    5)编译
    # make
   
    6)  安装
    #  make install
   
    7)  检查是否安装成功
    # cd  /usr/local/nginx/sbin
    # ./nginx -t
    结果显示:
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

3.4 配置防火墙 80 端口
    #修改防火墙配置:
    # vi + /etc/sysconfig/iptables
    #添加配置项
    -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
    #重启防火墙
    # service iptables restart

 

3.5 上传配置文件
    1)上传 nginx.conf(文件下载地址见上面的 Linux 公社资源站)
    # cd /usr/local/nginx/conf
    # rz nginx.conf
    2) 上传 fastcgi_params.phis
    # rz fastcgi_params.phis

3.6 启动停止重启与测试
    1)启动
        #方法 1
        # /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
        #方法 2
        # cd /usr/local/nginx/sbin
        # ./nginx

    2) 停止
        #查询 nginx 主进程号
        ps -ef | grep nginx
        #停止进程
        kill -QUIT 主进程号
        #快速停止
        kill -TERM 主进程号
        #强制停止
        pkill -9 nginx
   
    3) 重启(首次启动需:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf)
        /usr/local/nginx/sbin/nginx -s reload
   
    4)测试
        #测试端口
        netstat -na | grep 80
        #浏览器中测试
        http://ip:80
   

3.7 配置 Nginx 支持 php
    1)方式一:手动修改
    vi /usr/local/nginx/conf/nginx.conf      #编辑配置文件   
    user  www  www;          #首行 user 去掉注释, 修改 Nginx 运行组为 www www;必须与 /usr/local/php5/etc/php-fpm.conf 中的 user,group 配置相同,否则 php 运行出错   
    index  index.php  index.html index.htm;    #添加 index.php   
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000   
    #   
    location ~ \.php$ {
      #root          html;# 此处和 server 下面 root 保持一致, 默认为 html   
      fastcgi_pass  127.0.0.1:9000;   
      fastcgi_index  index.php;   
      #fastcgi_param SCRIPT_FILENAME  /usr/local/nginx/html/$fastcgi_script_name;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
      include        fastcgi_params;
    }
       
    注意:取消 FastCGI server 部分 location 的注释, 并要注意 fastcgi_param 行的参数, 改为 /data/webroot/(此为网站根目录绝对路径)$fastcgi_script_name
   
    /etc/init.d/nginx restart  #重启 nginx
    2)方式二:上传配置文件

    如 3.5 节操作方式,或手动填写配置文件

  # vi  /usr/local/php5/sbin/php-fpm

<?xml version=”1.0″ ?>
<configuration>

 All relative paths in this config are relative to php’s install prefix

 <section name=”global_options”>

  Pid file
  <value name=”pid_file”>/usr/local/php5/logs/php-fpm.pid</value>

  Error log file
  <value name=”error_log”>/data0/logs/php/php-fpm.log</value>

  Log level notice alert, error, warn, notice, debug
  <value name=”log_level”>warn</value>

  When this amount of php processes exited with SIGSEGV or SIGBUS …
  <value name=”emergency_restart_threshold”>10</value>

  … in a less than this interval of time, a graceful restart will be initiated.
  Useful to work around accidental curruptions in accelerator’s shared memory.
  <value name=”emergency_restart_interval”>1m</value>

  Time limit on waiting child’s reaction on signals from master
  <value name=”process_control_timeout”>5s</value>

  Set to ‘no’ to debug fpm
  <value name=”daemonize”>yes</value>

 </section>

 <workers>

  <section name=”pool”>

   Name of pool. Used in logs and stats.
   <value name=”name”>default</value>

   Address to accept fastcgi requests on.
   Valid syntax is ‘ip.ad.re.ss:port’ or just ‘port’ or ‘/path/to/unix/socket’
   <value name=”listen_address”>127.0.0.1:9000</value>

   <value name=”listen_options”>

    Set listen(2) backlog
    <value name=”backlog”>1024</value>

    Set permissions for unix socket, if one used.
    In Linux read/write permissions must be set in order to allow connections from web server.
    Many BSD-derrived systems allow connections regardless of permissions.
    <value name=”owner”></value>
    <value name=”group”></value>
    <value name=”mode”>0666</value>
   </value>

   Additional php.ini defines, specific to this pool of workers.
   <value name=”php_defines”>
  <!–  <value name=”sendmail_path”>/usr/sbin/sendmail -t -i</value>  –>
    <value name=”display_errors”>1</value>       
   </value>

   Unix user of processes
   <value name=”user”>www</value>   

   Unix group of processes
   <value name=”group”>www</value> 

   Process manager settings
   <value name=”pm”>

    Sets style of controling worker process count.
    Valid values are ‘static’ and ‘apache-like’
    <value name=”style”>static</value>

    Sets the limit on the number of simultaneous requests that will be served.
    Equivalent to Apache MaxClients directive.
    Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi
    Used with any pm_style.
    <value name=”max_children”>384</value>

    Settings group for ‘apache-like’ pm style
    <value name=”apache_like”>

     Sets the number of server processes created on startup.
     Used only when ‘apache-like’ pm_style is selected
     <value name=”StartServers”>20</value>

     Sets the desired minimum number of idle server processes.
     Used only when ‘apache-like’ pm_style is selected
     <value name=”MinSpareServers”>5</value>

     Sets the desired maximum number of idle server processes.
     Used only when ‘apache-like’ pm_style is selected
     <value name=”MaxSpareServers”>35</value>

    </value>

   </value>

   The timeout (in seconds) for serving a single request after which the worker process will be terminated
   Should be used when ‘max_execution_time’ ini option does not stop script execution for some reason
   ‘0s’ means ‘off’
   <value name=”request_terminate_timeout”>30s</value>

   The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file
   ‘0s’ means ‘off’
                        <value name=”request_slowlog_timeout”>0s</value>

   The log file for slow requests
   <value name=”slowlog”>/data0/logs/php/slow.log</value>

   Set open file desc rlimit
   <value name=”rlimit_files”>51200</value>

   Set max core size rlimit
   <value name=”rlimit_core”>0</value>

   Chroot to this directory at the start, absolute path
   <value name=”chroot”></value>

   Chdir to this directory at the start, absolute path
   <value name=”chdir”></value>

   Redirect workers’ stdout and stderr into main error log.
   If not set, they will be redirected to /dev/null, according to FastCGI specs
   <value name=”catch_workers_output”>yes</value>

   How much requests each process should execute before respawn.
   Useful to work around memory leaks in 3rd party libraries.
   For endless request processing please specify 0
   Equivalent to PHP_FCGI_MAX_REQUESTS
   <value name=”max_requests”>1024</value>

   Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect.
   Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+)
   Makes sense only with AF_INET listening socket.
   <value name=”allowed_clients”>127.0.0.1</value>

   Pass environment variables like LD_LIBRARY_PATH
   All $VARIABLEs are taken from current environment
   <value name=”environment”>
    <value name=”HOSTNAME”>$HOSTNAME</value>
    <value name=”PATH”>/usr/local/bin:/usr/bin:/bin</value>
    <value name=”TMP”>/tmp</value>
    <value name=”TMPDIR”>/tmp</value>
    <value name=”TEMP”>/tmp</value>
    <value name=”OSTYPE”>$OSTYPE</value>
    <value name=”MACHTYPE”>$MACHTYPE</value>
    <value name=”MALLOC_CHECK_”>2</value>
   </value>

  </section>

 </workers>

</configuration>

 

    2)重启 php-fpm 与 nginx
    # cd /usr/local/php5/sbin
    # ./php-fpm restart
    # cd /usr/local/nginx/sbin
    # ./nginx -s reload

 

4 Nginx 配置详解
配置详细说明
# 定义 Nginx 运行的用户和用户组
user www;
 
#nginx 进程数,建议设置为等于 CPU 总核心数。
worker_processes 8;
 
# 全局错误日志定义类型,[debug | info | notice | warn | error | crit]
error_log ar/loginx/error.log info;
 
# 进程文件
pid ar/runinx.pid;
 
# 一个 nginx 进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值 ulimit -n)与 nginx 进程数相除,但是 nginx 分配请求并不均匀,所以建议与 ulimit - n 的值保持一致。
worker_rlimit_nofile 65535;
 
# 工作模式与连接数上限
events
{
    #参考事件模型,use [kqueue | rtsig | epoll | /dev/poll | select | poll]; epoll 模型是 Linux 2.6 以上版本内核中的高性能网络 I / O 模型,如果跑在 FreeBSD 上面,就用 kqueue 模型。
    use epoll;
    #单个进程最大连接数(最大连接数 = 连接数 * 进程数)
    worker_connections 65535;
}
 
# 设定 http 服务器
http
{
    include mime.types; #文件扩展名与文件类型映射表
    default_type application/octet-stream; #默认文件类型
    #charset utf-8; #默认编码
    server_names_hash_bucket_size 128; #服务器名字的 hash 表大小
    client_header_buffer_size 32k; #上传文件大小限制
    large_client_header_buffers 4 64k; #设定请求缓
    client_max_body_size 8m; #设定请求缓
    sendfile on; #开启高效文件传输模式,sendfile 指令指定 nginx 是否调用 sendfile 函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘 IO 重负载应用,可设置为 off,以平衡磁盘与网络 I / O 处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成 off。
    autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。
    tcp_nopush on; #防止网络阻塞
    tcp_nodelay on; #防止网络阻塞
    keepalive_timeout 120; #长连接超时时间,单位是秒
   
    #FastCGI 相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看字面意思都能理解。
    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;
   
    #gzip 模块设置
    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; #压缩等级
    gzip_types text/plain application/x-Javascript text/css application/xml;
    #压缩类型,默认就已经包含 textml,所以下面就不用再写了,写上去也不会有问题,但是会有一个 warn。
    gzip_vary on;
    #limit_zone crawler $binary_remote_addr 10m; #开启限制 IP 连接数的时候需要使用
   
    upstream blog.linuxidc.com {
        #upstream 的负载均衡,weight 是权重,可以根据机器配置定义权重。weigth 参数表示权值,权值越高被分配到的几率越大。
        server 192.168.80.121:80 weight=3;
        server 192.168.80.122:80 weight=2;
        server 192.168.80.123:80 weight=3;
    }
   
    #虚拟主机的配置(一)
    server
    {
        #监听端口
        listen 80;
        #域名可以有多个,用空格隔开
        server_name www.linuxidc.com ha97.com;
        index index.html index.htm index.php;
        root /data/www/linuxidc;
        location ~ .*.(php|php5)?$
        {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi.conf;
        }
        #图片缓存时间设置
        location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires 10d;
        }
        #JS 和 CSS 缓存时间设置
        location ~ .*.(js|css)?$
        {
            expires 1h;
        }
        #日志格式设定
        log_format access ‘$remote_addr – $remote_user [$time_local] “$request” ‘
        ‘$status $body_bytes_sent “$http_referer” ‘
        ‘”$http_user_agent” $http_x_forwarded_for’;
        #定义本虚拟主机的访问日志
        access_log ar/loginx/linuxidcaccess.log access;
   
        #对 “/” 启用反向代理
        location / {
            proxy_pass http://127.0.0.1:88;
            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 服务器传
        }
   
        #设定查看 Nginx 状态的地址
        location /NginxStatus {
            stub_status on;
            access_log on;
            auth_basic “NginxStatus”;
            auth_basic_user_file confpasswd;
            #htpasswd 文件的内容可以用 apache 提供的 htpasswd 工具来产生。
        }
       
        #本地动静分离反向代理配置
        #所有 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;
        }
    }
   
    #虚拟主机的配置(二)
    server {
        listen 8080 ;
        server_name 127.0.0.1 172.1218.80;
        allow 127.0.0.1;
        allow 172.1218.0/24;
        deny all;
        location /server_status {
            stub_status on;
            access_log  off;
        }
    }
       
}

更多 Nginx 相关教程见以下内容

CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm

Ubuntu 16.04 下安装部署 Nginx+uWSGI+Django1.9.7  http://www.linuxidc.com/Linux/2016-07/133484.htm

搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm

CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm

CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm

CentOS 6.4 安装配置 Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm

Nginx 安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm

Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm

Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-08/134110.htm

Linux 中 Nginx 安装与配置详解(CentOS-6.5:nginx-1.5.0)。

1 Nginx 简介
Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。其将源代码以类 BSD 许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011 年 6 月 1 日,nginx 1.0.4 发布。

2 Nginx 下载
1)pcre
    http://www.pcre.org/
    2)nginx
    http://nginx.org/

3)本次安装所有的软件资源包地址

Linux 公社资源站下载:

—————————————— 分割线 ——————————————

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2016 年资料 / 8 月 /10 日 /Linux 中 Nginx 安装与配置详解 /

下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm

—————————————— 分割线 ——————————————

3 Nginx 安装
3.1 安装前的准备
    1)准备 pcre-8.12.tar.gz。该文件为正则表达式库。让 nginx 支持 rewrite 需要安装这个库。
    2) 准备 nginx-1.5.0.tar.gz。该文件为 nginx 的 linux 版本安装文件。
    3)确保进行了安装了 linux 常用必备支持库。

Linux 中必备常用支持库的安装(CentOS-6.5)

在 CentOS 安装软件的时候,可能缺少一部分支持库,而报错。这里首先安装系统常用的支持库。那么在安装的时候就会减少很多的错误的出现。

# yum install -y gcc gdb strace gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs patch e2fsprogs-devel krb5-devel libidn libidn-devel openldap-devel nss_ldap openldap-clients openldap-servers libevent-devel libevent uuid-devel uuid mysql-devel

3.2 正则表达式库安装
    1)确保进行了安装了 linux 常用必备支持库。检查是否安装了 g ++、gcc。rpm -qa | grep gcc 之后需要出现 3 个包如下图所示。如果没有出现。需要安装 g ++、gcc。

    # yum install gcc-c++

Linux 中 Nginx 安装与配置详解

     2) 上传 pcre-8.12.tar.gz, nginx-1.5.0.tar.gz 到 /usr/local/src/nginx 目录下。
   
    3)解压 pcre-8.12.tar.gz
    # cd /usr/local/src/nginx
    # tar zxvf pcre-8.12.tar.gz
   
    4)进入解压后的目录
    # cd pcre-8.12
   
    5)配置
    #  ./configure
    6) 编译
    #  make
    7) 安装
    #  make install
   

3.3 Nginx 安装
    0) 创建用户 nginx 使用的 www 用户。
    # groupadd  www  #添加 www 组   
    # useradd -g  www www -s /bin/false  #创建 nginx 运行账户 www 并加入到 www 组,不允许 www 用户直接登录系统
   
    创建安装目录与日志目录
    a) 安装目录
    # mkdir /usr/local/nginx
    b) 日志目录
    # mkdir /data0/logs/nginx
    # chown www:www /data0/logs/nginx -R
   
    1) 判断系统是否安装了 zlib-devel。如果没有安装。使用
    # yum install -y zlib-devel

Linux 中 Nginx 安装与配置详解
   
    2) 解压
    # cd /usr/local/src/nginx
    # tar zxvf nginx-1.5.0.tar.gz
   
    3) 进入目录
    # cd nginx-1.5.0
   
    4) 配置。通常将软件安装在 /usr/local/ 目录下。
    # ./configure –user=www –group=www –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module –with-http_realip_module
    5)编译
    # make
   
    6)  安装
    #  make install
   
    7)  检查是否安装成功
    # cd  /usr/local/nginx/sbin
    # ./nginx -t
    结果显示:
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

3.4 配置防火墙 80 端口
    #修改防火墙配置:
    # vi + /etc/sysconfig/iptables
    #添加配置项
    -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
    #重启防火墙
    # service iptables restart

 

3.5 上传配置文件
    1)上传 nginx.conf(文件下载地址见上面的 Linux 公社资源站)
    # cd /usr/local/nginx/conf
    # rz nginx.conf
    2) 上传 fastcgi_params.phis
    # rz fastcgi_params.phis

3.6 启动停止重启与测试
    1)启动
        #方法 1
        # /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
        #方法 2
        # cd /usr/local/nginx/sbin
        # ./nginx

    2) 停止
        #查询 nginx 主进程号
        ps -ef | grep nginx
        #停止进程
        kill -QUIT 主进程号
        #快速停止
        kill -TERM 主进程号
        #强制停止
        pkill -9 nginx
   
    3) 重启(首次启动需:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf)
        /usr/local/nginx/sbin/nginx -s reload
   
    4)测试
        #测试端口
        netstat -na | grep 80
        #浏览器中测试
        http://ip:80
   

3.7 配置 Nginx 支持 php
    1)方式一:手动修改
    vi /usr/local/nginx/conf/nginx.conf      #编辑配置文件   
    user  www  www;          #首行 user 去掉注释, 修改 Nginx 运行组为 www www;必须与 /usr/local/php5/etc/php-fpm.conf 中的 user,group 配置相同,否则 php 运行出错   
    index  index.php  index.html index.htm;    #添加 index.php   
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000   
    #   
    location ~ \.php$ {
      #root          html;# 此处和 server 下面 root 保持一致, 默认为 html   
      fastcgi_pass  127.0.0.1:9000;   
      fastcgi_index  index.php;   
      #fastcgi_param SCRIPT_FILENAME  /usr/local/nginx/html/$fastcgi_script_name;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
      include        fastcgi_params;
    }
       
    注意:取消 FastCGI server 部分 location 的注释, 并要注意 fastcgi_param 行的参数, 改为 /data/webroot/(此为网站根目录绝对路径)$fastcgi_script_name
   
    /etc/init.d/nginx restart  #重启 nginx
    2)方式二:上传配置文件

    如 3.5 节操作方式,或手动填写配置文件

  # vi  /usr/local/php5/sbin/php-fpm

<?xml version=”1.0″ ?>
<configuration>

 All relative paths in this config are relative to php’s install prefix

 <section name=”global_options”>

  Pid file
  <value name=”pid_file”>/usr/local/php5/logs/php-fpm.pid</value>

  Error log file
  <value name=”error_log”>/data0/logs/php/php-fpm.log</value>

  Log level notice alert, error, warn, notice, debug
  <value name=”log_level”>warn</value>

  When this amount of php processes exited with SIGSEGV or SIGBUS …
  <value name=”emergency_restart_threshold”>10</value>

  … in a less than this interval of time, a graceful restart will be initiated.
  Useful to work around accidental curruptions in accelerator’s shared memory.
  <value name=”emergency_restart_interval”>1m</value>

  Time limit on waiting child’s reaction on signals from master
  <value name=”process_control_timeout”>5s</value>

  Set to ‘no’ to debug fpm
  <value name=”daemonize”>yes</value>

 </section>

 <workers>

  <section name=”pool”>

   Name of pool. Used in logs and stats.
   <value name=”name”>default</value>

   Address to accept fastcgi requests on.
   Valid syntax is ‘ip.ad.re.ss:port’ or just ‘port’ or ‘/path/to/unix/socket’
   <value name=”listen_address”>127.0.0.1:9000</value>

   <value name=”listen_options”>

    Set listen(2) backlog
    <value name=”backlog”>1024</value>

    Set permissions for unix socket, if one used.
    In Linux read/write permissions must be set in order to allow connections from web server.
    Many BSD-derrived systems allow connections regardless of permissions.
    <value name=”owner”></value>
    <value name=”group”></value>
    <value name=”mode”>0666</value>
   </value>

   Additional php.ini defines, specific to this pool of workers.
   <value name=”php_defines”>
  <!–  <value name=”sendmail_path”>/usr/sbin/sendmail -t -i</value>  –>
    <value name=”display_errors”>1</value>       
   </value>

   Unix user of processes
   <value name=”user”>www</value>   

   Unix group of processes
   <value name=”group”>www</value> 

   Process manager settings
   <value name=”pm”>

    Sets style of controling worker process count.
    Valid values are ‘static’ and ‘apache-like’
    <value name=”style”>static</value>

    Sets the limit on the number of simultaneous requests that will be served.
    Equivalent to Apache MaxClients directive.
    Equivalent to PHP_FCGI_CHILDREN environment in original php.fcgi
    Used with any pm_style.
    <value name=”max_children”>384</value>

    Settings group for ‘apache-like’ pm style
    <value name=”apache_like”>

     Sets the number of server processes created on startup.
     Used only when ‘apache-like’ pm_style is selected
     <value name=”StartServers”>20</value>

     Sets the desired minimum number of idle server processes.
     Used only when ‘apache-like’ pm_style is selected
     <value name=”MinSpareServers”>5</value>

     Sets the desired maximum number of idle server processes.
     Used only when ‘apache-like’ pm_style is selected
     <value name=”MaxSpareServers”>35</value>

    </value>

   </value>

   The timeout (in seconds) for serving a single request after which the worker process will be terminated
   Should be used when ‘max_execution_time’ ini option does not stop script execution for some reason
   ‘0s’ means ‘off’
   <value name=”request_terminate_timeout”>30s</value>

   The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file
   ‘0s’ means ‘off’
                        <value name=”request_slowlog_timeout”>0s</value>

   The log file for slow requests
   <value name=”slowlog”>/data0/logs/php/slow.log</value>

   Set open file desc rlimit
   <value name=”rlimit_files”>51200</value>

   Set max core size rlimit
   <value name=”rlimit_core”>0</value>

   Chroot to this directory at the start, absolute path
   <value name=”chroot”></value>

   Chdir to this directory at the start, absolute path
   <value name=”chdir”></value>

   Redirect workers’ stdout and stderr into main error log.
   If not set, they will be redirected to /dev/null, according to FastCGI specs
   <value name=”catch_workers_output”>yes</value>

   How much requests each process should execute before respawn.
   Useful to work around memory leaks in 3rd party libraries.
   For endless request processing please specify 0
   Equivalent to PHP_FCGI_MAX_REQUESTS
   <value name=”max_requests”>1024</value>

   Comma separated list of ipv4 addresses of FastCGI clients that allowed to connect.
   Equivalent to FCGI_WEB_SERVER_ADDRS environment in original php.fcgi (5.2.2+)
   Makes sense only with AF_INET listening socket.
   <value name=”allowed_clients”>127.0.0.1</value>

   Pass environment variables like LD_LIBRARY_PATH
   All $VARIABLEs are taken from current environment
   <value name=”environment”>
    <value name=”HOSTNAME”>$HOSTNAME</value>
    <value name=”PATH”>/usr/local/bin:/usr/bin:/bin</value>
    <value name=”TMP”>/tmp</value>
    <value name=”TMPDIR”>/tmp</value>
    <value name=”TEMP”>/tmp</value>
    <value name=”OSTYPE”>$OSTYPE</value>
    <value name=”MACHTYPE”>$MACHTYPE</value>
    <value name=”MALLOC_CHECK_”>2</value>
   </value>

  </section>

 </workers>

</configuration>

 

    2)重启 php-fpm 与 nginx
    # cd /usr/local/php5/sbin
    # ./php-fpm restart
    # cd /usr/local/nginx/sbin
    # ./nginx -s reload

 

4 Nginx 配置详解
配置详细说明
# 定义 Nginx 运行的用户和用户组
user www;
 
#nginx 进程数,建议设置为等于 CPU 总核心数。
worker_processes 8;
 
# 全局错误日志定义类型,[debug | info | notice | warn | error | crit]
error_log ar/loginx/error.log info;
 
# 进程文件
pid ar/runinx.pid;
 
# 一个 nginx 进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值 ulimit -n)与 nginx 进程数相除,但是 nginx 分配请求并不均匀,所以建议与 ulimit - n 的值保持一致。
worker_rlimit_nofile 65535;
 
# 工作模式与连接数上限
events
{
    #参考事件模型,use [kqueue | rtsig | epoll | /dev/poll | select | poll]; epoll 模型是 Linux 2.6 以上版本内核中的高性能网络 I / O 模型,如果跑在 FreeBSD 上面,就用 kqueue 模型。
    use epoll;
    #单个进程最大连接数(最大连接数 = 连接数 * 进程数)
    worker_connections 65535;
}
 
# 设定 http 服务器
http
{
    include mime.types; #文件扩展名与文件类型映射表
    default_type application/octet-stream; #默认文件类型
    #charset utf-8; #默认编码
    server_names_hash_bucket_size 128; #服务器名字的 hash 表大小
    client_header_buffer_size 32k; #上传文件大小限制
    large_client_header_buffers 4 64k; #设定请求缓
    client_max_body_size 8m; #设定请求缓
    sendfile on; #开启高效文件传输模式,sendfile 指令指定 nginx 是否调用 sendfile 函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘 IO 重负载应用,可设置为 off,以平衡磁盘与网络 I / O 处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成 off。
    autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。
    tcp_nopush on; #防止网络阻塞
    tcp_nodelay on; #防止网络阻塞
    keepalive_timeout 120; #长连接超时时间,单位是秒
   
    #FastCGI 相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看字面意思都能理解。
    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;
   
    #gzip 模块设置
    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; #压缩等级
    gzip_types text/plain application/x-Javascript text/css application/xml;
    #压缩类型,默认就已经包含 textml,所以下面就不用再写了,写上去也不会有问题,但是会有一个 warn。
    gzip_vary on;
    #limit_zone crawler $binary_remote_addr 10m; #开启限制 IP 连接数的时候需要使用
   
    upstream blog.linuxidc.com {
        #upstream 的负载均衡,weight 是权重,可以根据机器配置定义权重。weigth 参数表示权值,权值越高被分配到的几率越大。
        server 192.168.80.121:80 weight=3;
        server 192.168.80.122:80 weight=2;
        server 192.168.80.123:80 weight=3;
    }
   
    #虚拟主机的配置(一)
    server
    {
        #监听端口
        listen 80;
        #域名可以有多个,用空格隔开
        server_name www.linuxidc.com ha97.com;
        index index.html index.htm index.php;
        root /data/www/linuxidc;
        location ~ .*.(php|php5)?$
        {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi.conf;
        }
        #图片缓存时间设置
        location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires 10d;
        }
        #JS 和 CSS 缓存时间设置
        location ~ .*.(js|css)?$
        {
            expires 1h;
        }
        #日志格式设定
        log_format access ‘$remote_addr – $remote_user [$time_local] “$request” ‘
        ‘$status $body_bytes_sent “$http_referer” ‘
        ‘”$http_user_agent” $http_x_forwarded_for’;
        #定义本虚拟主机的访问日志
        access_log ar/loginx/linuxidcaccess.log access;
   
        #对 “/” 启用反向代理
        location / {
            proxy_pass http://127.0.0.1:88;
            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 服务器传
        }
   
        #设定查看 Nginx 状态的地址
        location /NginxStatus {
            stub_status on;
            access_log on;
            auth_basic “NginxStatus”;
            auth_basic_user_file confpasswd;
            #htpasswd 文件的内容可以用 apache 提供的 htpasswd 工具来产生。
        }
       
        #本地动静分离反向代理配置
        #所有 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;
        }
    }
   
    #虚拟主机的配置(二)
    server {
        listen 8080 ;
        server_name 127.0.0.1 172.1218.80;
        allow 127.0.0.1;
        allow 172.1218.0/24;
        deny all;
        location /server_status {
            stub_status on;
            access_log  off;
        }
    }
       
}

更多 Nginx 相关教程见以下内容

CentOS 6.2 实战部署 Nginx+MySQL+PHP http://www.linuxidc.com/Linux/2013-09/90020.htm

Ubuntu 16.04 下安装部署 Nginx+uWSGI+Django1.9.7  http://www.linuxidc.com/Linux/2016-07/133484.htm

搭建基于 Linux6.3+Nginx1.2+PHP5+MySQL5.5 的 Web 服务器全过程 http://www.linuxidc.com/Linux/2013-09/89692.htm

CentOS 6.3 下 Nginx 性能调优 http://www.linuxidc.com/Linux/2013-09/89656.htm

CentOS 6.3 下配置 Nginx 加载 ngx_pagespeed 模块 http://www.linuxidc.com/Linux/2013-09/89657.htm

CentOS 6.4 安装配置 Nginx+Pcre+php-fpm http://www.linuxidc.com/Linux/2013-08/88984.htm

Nginx 安装配置使用详细笔记 http://www.linuxidc.com/Linux/2014-07/104499.htm

Nginx 日志过滤 使用 ngx_log_if 不记录特定日志 http://www.linuxidc.com/Linux/2014-07/104686.htm

Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-08/134110.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计27156字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7987172
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...
星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛 NAS-4:飞牛 NAS 安装 istore 旁路由,家庭网络升级的最佳实践 开始 大家好我是...
星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛 NAS-8:有了 NAS 你可以干什么?软件汇总篇 前言 哈喽各位玩友!我是是星哥,不少朋友私...
终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的 3D 玩偶了 前些日子参加某网站活动,获得一次实物 3D 打印的机会,于是从众多...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...