当前位置: 首页 > news >正文

Nginx 目录配置详解

进入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,如需转载请自行联系原作者


相关文章:

  • 详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解...
  • linux之理解文件系统上的复制,移动,删除
  • Linux运维 第四阶段 (三) MySQL的SQL语句
  • C# GetSchema Get List of Table 获取数据库中所有的表名以及表中的纪录条数的方法
  • XML技术-Schema约束-Dom4j-Xpath详解
  • 从windows server的文件服务到分布式文件服务(二)
  • linux命令之uptime
  • LLDB调试工具简单使用
  • Linux必会原理之输入网址到看到页面内容原理
  • 通过RMAN备份duplicate异机克隆恢复数据库
  • 用C#设计一个四则运算器
  • j2se学习中的一些零碎知识点8之多线程
  • SCAC连接MicrosoftAzure
  • C#常见错误解决方法
  • 暖心的回复
  • [笔记] php常见简单功能及函数
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • Brief introduction of how to 'Call, Apply and Bind'
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • javascript从右向左截取指定位数字符的3种方法
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Java比较器对数组,集合排序
  • SegmentFault 2015 Top Rank
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • Sublime Text 2/3 绑定Eclipse快捷键
  • vue-router 实现分析
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 基于HAProxy的高性能缓存服务器nuster
  • 驱动程序原理
  • 微信小程序设置上一页数据
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 自定义函数
  • 阿里云重庆大学大数据训练营落地分享
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (C++17) optional的使用
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (搬运以学习)flask 上下文的实现
  • (补)B+树一些思想
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (论文阅读11/100)Fast R-CNN
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (转)http协议
  • (转)详解PHP处理密码的几种方式
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .net MVC中使用angularJs刷新页面数据列表
  • .net 按比例显示图片的缩略图
  • .net 微服务 服务保护 自动重试 Polly
  • .Net6使用WebSocket与前端进行通信