• Nginx 相关配置文件修改


    1、为了使Nginx服务的启动、停止、重载等操作更加方便,可以编写Nginx服务脚本,并使用chkconfigsystemctl工具来进行管理,也更加符合RHEL系统的管理习惯。

    [root@nginx~]# vim /etc/init.d/nginx

    #!/bin/bash

    # chkconfig: 2345 99 20

    # description: Nginx Server Control Script

    PROG="/usr/local/nginx/sbin/nginx"

    PIDF="/usr/local/nginx/logs/nginx.pid"

     

    case "$1" in

    start)

    $PROG

    ;;

    stop)

    kill -s QUIT $(cat $PIDF)

    ;;

    restart)

    $0 stop

    $0 start

    ;;

    reload)

    kill -s HUP $(cat $PIDF)

    ;;

    *)

    echo "Usage: $0 {start|stop|restart|reload}"

    exit 1

    esac

    exit 0

     保存退出

    [root@nginx~]#chmod +x /etc/init.d/nginx

    [root@nginx~]#chkconfig --add nginx

    [root@nginx~]#chkconfignginx on

    [root@nginx~]#chkconfig --list nginx

    nginx0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭

     

    这样就可以通过nginx脚本来启动、停止、重启、重载Nginx服务器了。

    2、nginx.conf文件结构

    Nginx服务器的主配置文件nginx.conf中,包括全局配置、I/O事件配置、HTTP配置这三大块内容,配置语句的格式为"关键字 值;"(末尾以分号表示结束),以"#"开始的部分表示注释。

    1)全局配置

     由各种配置语句组成,不使用特定的界定标记。全局配置部分包括运行用户、工作进程数、错误日志、PID存放位置等基本设置。

     

    常用配置项:

    • user nginx [nginx]; //运行用户,Nginx的运行用户实际是编译时指定的nginx,若编译时未指定则默认为nobody
    • worker_processes 2;//指定nginx启动的工作进程数量,建议按照cpu数目来指定,一般和CPU核心数相等。
    • worker_cpu_affinity 00000001 00000010; //为每个进程分配cpu核心,上例中将2个进程分配到两个cpu,当然可以写多个,或者将一个进程分配到多个cpu
    • worker_rlimit_nofile 102400; //这个指令是指当一个nginx进程打开的最多文件数目,理论值应该是最多打开文件数(ulimit-n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。(通过"ulimit–n 数值"可以修改打开的最多文件数目)
    • error_log logs/error.log; //全局错误日志文件的位置
    • pid logs/nginx.pid; //PID文件的位置

    2I/O事件配置:

    使用"events {}"界定标记,用来指定Nginx进程的I/O响应模型,每个进程的连接数等设置

    events {

      //使用epoll模型,对于2.6以上的内核,建议使用epoll模型以提高性能

     

    worker_connections 4096; //每个进程允许的最多连接数(默认为1024),每个进程的连接数应根据实际需要来定,一般在10000以下,理论上每台nginx服务器的最大连接数为worker_processes*worker_connections,具体还要看服务器的硬件、带宽等。

     

    }

    3HTTP配置

     

    使用"http{}"界定标记,包括访问日志、HTTP端口、网页目录、默认字符集、连接保持、以及虚拟主机、PHP解析等一系列设置。其中大部分配置语句包含在子界定标记"server {}"内。

     

    http {

     

        include       mime.types;

     

    default_type  application/octet-stream;

     

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

     

                        '$status $body_bytes_sent "$http_referer" '

     

                          '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main; //访问日志位

     

    sendfile        on; //支持文件发送(下载)

     

    keepalive_timeout  65; //连接保持超时

     

        server { //web服务的监听配置

     

            listen       80; //监听地址及端口(IPPORT

     

    server_name  www.crushlinux.com; //网站名称(FQDN

     

    charset utf-8; //网页的默认字符集

        location / { //跟目录配置

     

                root   html; //网站根目录的位置安装位置的html

     

                index  index.html index.htm; //默认首页(索引页)

     

            }

     

    error_page   500 502 503 504  /50x.html; //内部错误的反馈页面

     

            location = /50x.html { //错误页面配置

     

                root   html;

     

            }

     

     

    3、状态统计模块

     

    Nginx内置了HTTP_STUB_STATUS状态统计模块,用来反馈当前的WEB访问情况。配置编译参数时可添加--with-http_stub_stastus_module来启用此模块。要使用Nginx的状态统计功能,除了启用内建模块以外,还需要修改nginx.conf文件,指定访问位置并打开stub_status配置。在http{}配置的server{}子配置内添加如下配置项

     

    [root@nginx~]# vim /usr/local/nginx/conf/nginx.conf

     

    location /status {

     

    stub_status on;//打开状态统计功能

     

    access_log off;//关闭此位置的日志记录

     

            }

     

    [root@nginxconf]#systemctl restart nginx

     

     浏览器访问 http://192.168.200.111/status

     

    Active connections 表示当前活跃的连接数,

    第三行的三个数字表示Nginx当前总共处理了3个连接,成功创建3次握手,总共处理了12个请求。

    Reading表示Nginx读取到客户端Header信息数,

    Writing表示Nginx返回给客户端的Header信息数

    Waiting表示Nginx已经处理完,正在等候下一次请求指令时的驻留连接数。

    4、虚拟主机应用

     使用Nginx搭建虚拟主机服务器时,每个虚拟WEB站点拥有独立的"server {}"配置段,各自监听的IP地址、端口号可以单独指定,当然网站名称也是不同的。

     

    例如:要创建两个站点www.crushlinux.comwww.cloud.com

     

    为两个虚拟WEB主机分别建立根目录,并准备测试首页

     

    [root@nginx~]#mkdir /usr/local/nginx/html/crushlinux

     

    [root@nginx~]#mkdir /usr/local/nginx/html/cloud

     

    [root@nginx~]# echo "<h1>www.crushlinux.com</h1>" >/usr/local/nginx/html/crushlinux/index.html

     

    [root@nginx~]# echo "<h1>www.cloud.com</h1>" > /usr/local/nginx/html/cloud/index.html

     

    [root@nginx~]# vim /usr/local/nginx/conf/nginx.conf

     

    http {

     

        include       mime.types;

     

    default_type  application/octet-stream;

     

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

     

                          '$status $body_bytes_sent "$http_referer" '

     

                          '"$http_user_agent" "$http_x_forwarded_for"';

     

    access_log  logs/access.log  main;

     

    sendfile        on;

     

    keepalive_timeout  65;

     

        server {

     

            listen       80;

     

    server_name  www.crushlinux.com;

     

    charset utf-8;

     

    access_log  logs/crushlinux.access.log  main;

     

            location / {

     

                root   html/crushlinux;

     

    index  index.html index.htm;

     

            }

     

        }

     

     

        server {

     

            listen       80;

     

    server_name  www.cloud.com;

     

            charset utf-8;

     

    access_log  logs/cloud.access.log  main;

     

            location / {

     

                root   html/cloud;

     

    index  index.html index.htm;

     

            }

     

        }

     

    }

     

     

    [root@nginx~]#systemctl restart nginx

     

    [root@nginx~]# vim /etc/hosts

     

    192.168.200.111 www.crushlinux.com

     

    192.168.200.111 www.cloud.com

     

    虚拟主机访问测试

     

    [root@nginx~]#elinks --dump http://www.crushlinux.com

     

                                     www.crushlinux.com

     

    [root@nginx~]#elinks --dump http://www.cloud.com

     

                                      www.cloud.com

    7、测试

    分别在浏览器中输入域名以及IP地址来查看网页相应内容

     

     

     

     

     

     

     

  • 相关阅读:
    android-----JNI学习 helloworld
    android布局之线性布局
    Hadoop最基本的wordcount(统计词频)
    有些错误就只因没有全局观
    Eclipse如何生成带有自定tag的Java Doc
    编程之美----高效率地安排见面会----贪心策略
    Servlet Filter
    【解决方法】VS 丢失模板
    你不是一个人在战斗——软件项目团队模型
    [Oracle] Data Pump 详细使用教程(4)- network_link
  • 原文地址:https://www.cnblogs.com/elin989898/p/11870632.html
Copyright © 2020-2023  润新知