文件分布
我们使用tree命令,可以看到nginx的文件如下图分布。
apples-MacBook-Pro:nginx apple$ tree
.
├── conf.d
│ └── php-fpm
├── fastcgi.conf
├── fastcgi.conf.default
├── fastcgi_params
├── fastcgi_params.default
├── koi-utf
├── koi-win
├── logs
│ ├── access.log
│ ├── core.access.log
│ ├── default-ssl.access.log
│ ├── default.access.log
│ ├── error.log
│ ├── phpmyadmin.access.log
│ └── phpmyadmin.error.log
├── mime.types
├── mime.types.default
├── nginx.conf
├── nginx.conf.default
├── scgi_params
├── scgi_params.default
├── servers
├── sites-available
│ ├── default
│ ├── default-ssl
│ └── phpmyadmin
├── sites-enabled
│ ├── default -> /usr/local/etc/nginx/sites-available/default
│ ├── default-ssl -> /usr/local/etc/nginx/sites-available/default-ssl
│ └── phpmyadmin -> /usr/local/etc/nginx/sites-available/phpmyadmin
├── ssl
│ ├── localhost.crt
│ ├── localhost.key
│ ├── phpmyadmin.crt
│ └── phpmyadmin.key
├── uwsgi_params
├── uwsgi_params.default
└── win-utf
6 directories, 33 files
tree命令原本是在linux中存在,我们在mac中使用需要下载,在这里我用
brew install tree 来下载它,之后我们进入/usr/local/etc/nginx然后使用tree就能得到上述内容
简单的说一下
conf.d里面包含了php-fpm,php-fpm是一个fastCGI进程管理器/引擎:即对动态脚本进行实际解析的守护进程,由fastCGI启动。这里,php-fpm就是支持解析php的一个fastCGI进程管理器/引擎。
fastCGI是由CGI(common gateway interface,通用网关接口)发展而来,是http服务器(nginx、apache)和动态脚本语言(php)之间的通信接口。记住,fastCGI只是一个接口。
fastCGI的优点:fastCGI采用C/S结构,可以将http服务器和动态脚本解析服务器分离(二者可以部署在不同的服务器上),让http服务器专一处理静态请求和转发动态请求到脚本解析服务器;脚本解析服务器则专一处理动态脚本的请求。
logs文件夹存储了日志
nginx.conf是主要的nginx服务器配置文件,我们等下会着力学习。
scgi_params则是scgi的配置文件
SCGI(Simple Common Gateway Interface)与FastCGI相似,也是CGI的一个替代协议,SCGI源于Python社区,
SCGI模块能够使得Nginx与SCGI进程进行互相配合工作,并且能够控制将什么参数传递到SCGI进程,本模块Nginx服务器于0.8.42版本开始提供使用。
如想进一步了解点击这里
sites-available则是管理大量站点时服务器的一种通用配置。
sites-enabled则是一种单独配置,需要使用enabled时,需要使用ln命令软连接到相应网站。
ln是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln –s 源文件 目标文件。
范例 :
将档案 yy 产生一个 symbolic link : zz
ln -s yy zz
将档案 yy 产生一个 hard link : zz
ln yy xx
具体的可以看这里
ssl模块 我就不多说了具体的使用可以看[这里]
()
uwsgi_params则是用来部署和配置python应用
win-utf 字体设置
配置说明
nginx.conf是主配置文件,默认配置去掉注释之后的内容如下图所示:
worker_process的配置
worker_process表示工作进程的数量,一般设置为cpu的核数
worker_connections表示网站最大并发连接数,默认为1024.如果你的网站访问量很大,则需要调高worker_connections的数值。当然,你一定要按照你自己的实际情况而定,也不能设置太大,不能让你的CPU跑满100%。
如果nginx 中worker_connections 值设置是1024,worker_processes 值设置是4,按反向代理模式下最大连接数的理论计算公式:
最大连接数 = worker_processes * worker_connections/4
查看相关资料,生产环境中worker_connections 建议值最好超过9000,计划将一台nginx 设置为10240,再观察一段时间。
server模块
listen:8080 服务器默认使用8080端口 可以自己随意修改,只要别占用其他程序的端口即可
这里所指的是逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535。mac中查看端口的命令为:lsof。这个命令会刷出一屏幕的端口及其占用的文件。也可以使用netstat命令来查看,该端口是否打开
netstat -nat | grep <端口号> ,例如:netstat -nat | grep 3306
如果想要知道的更多可以点击这里
server_name localhost 用户名称,如果在服务器在自己主机上,可以使用http://localhost 来访问,随意更改
location / {
root html;
index index.html index.htm;
}
定义了主页为index或者index.html或者index.htm,如有必要随意修改
error_page 500 502 503 504 /50x.html;
定义了如上的错误代码,服务器重定向的网页分别为501.html或502.html或503.html或504.html
mime.types
文件扩展名与文件类型映射表,nginx根据映射关系,设置http请求响应头的Content-Type值。当在映射表找不到时,使用nginx.conf中default-type指定的默认值。例如,默认配置中的指定的default-type为application/octet-stream。
默认
include mime.types;
default_type application/octet-stream;
下面截一段mime.types定义的文件扩展名与文件类型映射关系,完整的请自行查看:
types {
text/html html htm shtml;
text/css css;
text/xml xml;
image/gif gif;
image/jpeg jpeg jpg;
application/javascript js;
application/atom+xml atom;
application/rss+xml rss;
text/mathml mml;
text/plain txt;
text/vnd.sun.j2me.app-descriptor jad;
text/vnd.wap.wml wml;
text/x-component htc;
image/png png;
image/tiff tif tiff;
image/vnd.wap.wbmp wbmp;
image/x-icon ico;
image/x-jng jng;
image/x-ms-bmp bmp;
image/svg+xml svg svgz;
image/webp webp;