Nginx 相关配置文件修改

Posted elin菻

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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地址来查看网页相应内容

 

 

 

 

 

 

 

 

以上是关于Nginx 相关配置文件修改的主要内容,如果未能解决你的问题,请参考以下文章

Nginx 配置实例-配置负载均衡

Nginx 配置实例-配置负载均衡

nginx基础优化

Nginx——相关命令

Nginx 如何设置反向代理

GitLab 配置模板