nginx 配置分享

作者: 小小小小诺 | 来源:发表于2016-10-15 16:14 被阅读152次

    今天来做一下 nginx 的分享


    准备工作

    首先是编译需要的一些东西

    gcc-c++

    libtool

    gzip 模块需要 zlib 库

    rewrite 模块需要 pcre 库

    ssl 功能需要 openssl 库


    安装依赖

    直接用 yum 安装就行了,不用自己编译,节省很多时间

    下面依赖,根据实际情况自己安装需要的

    yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel
    

    编译安装

    然后编译安装

    ./configure --prefix=/usr/local/nginx \
    --with-http_stub_status_module \
    --with-http_ssl_module \
    --with-http_gzip_static_module \
    --with-http_realip_module \
    
    make
    make install
    

    权限不够的话自己想办法。。sudo 一下


    常用编译选项

    --prefix=PATH: 指定nginx的安装目录。默认 /usr/local/nginx

    --conf-path=PATH: 设置nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/nginx.conf

    --user=name: 设置nginx工作进程的用户。安装完成后,可以随时在nginx.conf配置文件更改user指令。默认的用户名是nobody。--group=name类似

    --with-http_ssl_module: 使用https协议模块。默认情况下,该模块没有被构建。前提是openssl与openssl-devel已安装

    --with-http_stub_status_module: 用来监控 Nginx 的当前状态

    --with-http_gzip_static_module: 是针对 nginx serve 的静态文件,需要编译进去才能有

    --with-http_realip_module: 通过这个模块允许我们改变客户端请求头中客户端IP地址值(例如X-Real-IP 或 X-Forwarded-For),意义在于能够使得后台服务器记录原始客户端的IP地址

    --with-pcre: 设置PCRE库的源码路径,如果已通过yum方式安装,使用--with-pcre自动找到库文件。使用--with-pcre=PATH时,需要从PCRE网站下载pcre库的源码(版本4.4 - 8.30)并解压,剩下的就交给Nginx的./configure和make来完成。perl正则表达式使用在location指令和 ngx_http_rewrite_module模块中。

    --with-zlib=PATH: 指定 zlib(版本1.1.3 - 1.2.5)的源码解压目录。在默认就启用的网络传输压缩模块ngx_http_gzip_module时需要使用zlib 。

    --add-module=PATH: 添加第三方外部模块,如nginx-sticky-module-ng或缓存模块。每次添加新的模块都要重新编译(Tengine可以在新加入module时无需重新编译)


    常用操作

    启动关闭 nginx 等常用操作

    # 检查配置文件是否正确
    /usr/local/nginx/sbin/nginx -t
    
    # 查看编译选项
    /usr/local/nginx/sbin/nginx -V
    
    # 启动
    /usr/local/nginx/sbin/nginx  # 默认配置文件 conf/nginx.conf,-c 指定
    
    #关闭
    /usr/local/nginx/sbin/nginx -s stop
    # or
    pkill nginx
    
    # 重启,不会改变启动时指定的配置文件
    /usr/local/nginx/sbin/nginx -s reload
    # 或者
    kill -HUP `cat /usr/local/nginx-1.6/logs/nginx.pid`
    
    # 也可以将 nginx 作为系统服务管理,下载 nginx 到/etc/init.d/,修改路径和可执行权限
    
    # service nginx {start|stop|status|restart|reload|configtest}
    

    解析 php

    需要 php-fpm 的支持

    直接使用自带的 php-fpm

    如果没有,那重新编译 PHP,在原有的编译信息后加上 --enable-fpm

    查看原本的编译信息

    php -i | grep Configure
    

    加上 --enable-fpm 选项进行重新编译


    配置 php-fpm

        #复制一份配置文件
        sudo cp /usr/local/php7/etc/php-fpm.conf.default.conf  php-fpm.conf
    
        #复制一份用户配置文件,用户名是配置 php 时指定的
        sudo cp /usr/local/php7/etc/php-fpm.d/www.conf.default www.conf
    
        #启动 php-fpm,mac 必须要以 root 用户启动,-R 参数表示 --allow-to-run-as-root
        sudo /usr/local/php7/sbin/php-fpm -R
    
        #查看一下php-fpm是否启动成功
        ps aux | grep php-fpm
    
        # php-fpm 的默认端口号是 9000
        netstat -ant | grep 90000
    

    nginx 整合 php-fpm

    location ~ \.php$ {
        root           /data/home/arnoliu/www/developers.e.qq.com/web;
        fastcgi_pass   127.0.0.1:9001;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /data/home/arnoliu/www/developers.e.qq.com/web$fastcgi_script_name;
        include        fastcgi_params;
    }
    

    nginx 配置

    nginx.conf 配置文件

    nginx 配置文件主要分成四部分:

    • main:(全局设置)其他部分的会继承自 main
    • server:(主机设置)主要用于指定虚拟主机域名、IP 和端口
    • location:(URL 路由)用于匹配路由信息
    • upstream:(主要为反向代理、负载均衡相关配置)upstream 主要用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡

    server 继承 main,location 继承 server

    upstream 既不会继承指令也不会被继承,它有自己的特殊指令


    我的配置

    worker_processes  8;
    
    events {
        worker_connections  1024;
    }
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        access_log  logs/access.log;
    
        sendfile        on;
        keepalive_timeout  60;
    
        tcp_nopush on;
        tcp_nodelay on;
    
        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 on;
        gzip_min_length 1k;
        gzip_buffers 4 16k;
        gzip_http_version 1.0;
        gzip_comp_level 2;
        gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
        gzip_vary on;
    
        server {
            listen       80;
            server_name  example.qq.com;
    
            root /data/home/arnoliu/www/example/web;
            charset utf-8;
    
            location / {
                root /data/home/arnoliu/www/example/web;
                index index.php index.html index.htm;
            }
    
            location ~ \.php$ {
                root          /data/home/arnoliu/www/example/web;
                fastcgi_pass  127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME  /data/home/arnoliu/www/example/web$fastcgi_script_name;
                include       fastcgi_params;
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:nginx 配置分享

        本文链接:https://www.haomeiwen.com/subject/blxoyttx.html