Nginx 目录配置详解

  1. 云栖社区>
  2. 博客>
  3. 正文

Nginx 目录配置详解

技术小阿哥 2017-11-27 11:24:00 浏览1019
展开阅读全文

进入nginx目录,排除temp文件后,剩余四个目录

[root@elkzabbix01 nginx]# ls -l | grep -v temp

总用量 36

drwxr-xr-x. 2 root root 4096 7月  12 20:42 conf  → 配置文件

drwxr-xr-x. 2 root root 4096 7月  12 20:42 html  → 站点信息

drwxr-xr-x. 2 root root 4096 7月  12 20:49 logs  → 日志信息

drwxr-xr-x. 2 root root 4096 7月  12 20:42 sbin  → 启动命令


cd /html 

里面有文件index.html ,这个文件一般默认是网站的首页


下面进入conf文件夹,下面有一个 nginx.conf 文件

运维有一个很重要的思想叫最小化学习,所以我们要把配置文件简化一下:

简化命令:

egrep -v "#|^$" nginx.conf >> a.conf

^代表行首

$代表行尾

^$意思就是行首之后就是行尾,中间什么也没有,所以代表空行


worker_processes  1;    默认进程有一个 


一个worker可以处理多少并发连接

events {

    worker_connections  1024; 

}


那么有多少个worker呢???可以看配置文件第一行

[root@elkzabbix01 conf]# ps -ef | grep nginx

root  8398  1     0  Jul12 ?  00:00:00 nginx: master process /app/zpy/nginx/sbin/nginx

zpy   8399  8398  0  Jul12 ?  00:00:00 nginx: worker process    

可以看到就一个worker process ,一般认为worker process 与cpu 核数相当

所以nginx最大并发连接数是怎么计算的呢 ??

worker process 乘以  worker_connections


-----------------------

http模块


http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile       on;

    keepalive_timeout  65;

下面这个叫做server标签,一个server标签代表一个虚拟主机

    server {

        listen       80;            监听端口

        server_name  localhost;     域名

        location / {                   /  代表直接在浏览器输入 http://10.0.70.3 

            root   html;

            index  index.html index.htm;    这个代表首页文件

        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {    /50.x.html代表直接在浏览输http://10.0.70.3/50.x.html

            root   html;

        }



wKiom1eGJjugyJ-rAACurgBpXxQ987.png-wh_50 



nginx 虚拟主机的概念
所谓的虚拟主机,在web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可能是IP或者端口),具有独立程序及资源目录,可以独立的对外提供服务供用户访问 


apache是如何定义虚拟主机的 ?

配置文件中 <VirtualHost> </VirtualHost> 内

nginx是如何定义虚拟主机的?

在配置文件中server{} 的标签


虚拟主机一般分为如下三类:

基于域名的虚拟主机

基于端口的虚拟主机

基于ip的虚拟主机


配置基于域名的虚拟主机

  server {

        listen       80;

        server_name  www.vipdailiang.com;

        location / {

            root   html/www;   

            index  www.html ;

        }

    }


1)首先需要在/app/zpy/nginx/html下创建 www目录

mkdir -p /app/zpy/nginx/html/www

2)在www目录下创建www.html,并添加www.zipeiyi.com的内容 

echo "www.vipdailiang" >> /app/zpy/nginx/html/www/www.html

3)最重要的一步,nginx一旦应用在企业环境中,它的作用会变得很重要,所以修改了配置文件,不要贸然重启,需要先检查一遍nginx配置文件的合理性

/app/zpy/nginx/sbin/nginx -t

nginx: the configuration file /app/zpy/nginx-1.8.1//conf/nginx.conf syntax is ok

nginx: configuration file /app/zpy/nginx-1.8.1//conf/nginx.conf test is successful

4)平滑重启nginx 

/app/zpy/nginx/sbin/nginx -s reload 


备注:

如果nginx参数过多记不住怎么办??

/app/zpy/nginx/sbin/nginx -h

Options:

  -?,-h         : this help

  -v            : show version and exit

  -V            : show version and configure options then exit

  -t            : test configuration and exit

  -q            : suppress non-error messages during configuration testing

  -s signal     : send signal to a master process: stop, quit, reopen, reload

  -p prefix     : set prefix path (default: /app/zpy/nginx-1.8.1//)

  -c filename   : set configuration file (default: conf/nginx.conf)

  -g directives : set global directives out of configuration file


最后在浏览器输入10.0.70.3

wKiom1eHCgmgvCzKAAA2cp7a2VU080.png-wh_50

但是如果输入:www.vipdailiang.com 

wKioL1eHCkDRJLAAAABNDmj9h2c663.png-wh_50


这是因为你电脑本机解析不到的原因:

有两种解析的办法:

  1. 修改本机的host文件(linux是/etc/hosts ,windows的C\windows\system32\drivers\etc\hosts

    添加10.0.70.3 www.vipdailiang.com

  2. 在本地DNS里面加入域名对应关系

最后效果如下,至此基于域名的虚拟主机配置完毕


wKioL1eHDJ-RfsnuAAA5arebg-8233.png-wh_50


配置多个基于域名的虚拟主机

  server {

        listen       80;

        server_name  www.vipdailiang.com;

        location / {

            root   html/www;   

            index  www.html ;

        }

    }

  server {

        listen       80;

        server_name  bbs.vipdailiang.com;

        location / {

            root   html/bbs;   

            index  bbs.html ;

        }

    }

这样你就可能会想了,怎么都是80端口,那么我在浏览器输入http://10.0.70.3 会出现什么???

别急,细细道来

我做了一个实验,发现是下图的结构:

如果你用ip进行测试的化,那么应该是按照 server{}的顺序来的

wKiom1eHMaDSKFR2AABJRVIc22Q580.png-wh_50

总结:基与域名的虚拟主机,就不要这样测试了,应该用域名测试

wKioL1eHMg2Sp7ZcAABA8bzsIP4162.png-wh_50


wKiom1eHMjXyS7AiAABNH5_ZScc687.png-wh_50

到此基于域名的nginx虚拟主机讲解完毕



配置基于端口的虚拟主机

  server {

        listen       8001;

        server_name  www.vipdailiang.com;

        location / {

            root   html/www;   

            index  www.html ;   → 这里面内容改为 ism

        }

    }

  server {

        listen       8002;

        server_name  www.vipdailiang.com;

        location / {

            root   html/bbs;   

            index  bbs.html ;  →这里面内容改为imp

        }

    }


netstat -tunpl | grep nginx ,可以看到nginx起了8001与8002两个端口


tcp  0    0    0.0.0.0:8001   0.0.0.0:*     LISTEN      8398/nginx         

tcp  0    0    0.0.0.0:8002   0.0.0.0:*     LISTEN      8398/nginx  

那么该怎么检测呢??


curl www.vipdailiang.com:8001

ism

curl www.vipdailiang.com:8002

imp



配置基于IP的虚拟主机



这个需要有多块网卡,nginx服务器需要多个ip

这个在生产环境中极为少见,这里就不做解释了


nginx 其他基础配置项

添加状态标签

配置文件内容:

server {

    listen 8003;

    server_name status.nginx_1.com;

    stub_status on;

    access_log off;

}


访问http://status.nginx_1.com:8003

Active connections:3

server accepts handled requests

75 75 44

Reading:0 Writing:1 Waiting:2


解释:

第一个server表示nginx启动到现在共处理了75个连接;

第二个accepts表示nginx启动到现在共成功创建了75次握手

请求丢失次数=(握手数-连接数),可以看出没有丢失请求;

第三个handled requests 表示共处理了44次请求


Reading:nginx 读取到客户端的Header信息数

Writing:nginx 返回给客户端的Header信息数

Waiting:nginx 已经处理完正在等候下一次请求指令的驻留连接,开启keep-alive的情况下。

这个值等于 active - (reading + writing)

ok。。至此nginx配置文件就讲解完成了



本文转自 周新宇1991 51CTO博客,原文链接:http://blog.51cto.com/zhouxinyu1991/1826387,如需转载请自行联系原作者


网友评论

登录后评论
0/500
评论
技术小阿哥
+ 关注