一 、Nginx简述
Nginx是一个开源、高性能、可靠的HTTP中间件、代理服务。
二 、常见的HTTP服务
1. HTTPD-Apache基金会
2. IIS-微软
3. GWS-Google
4. Nginx
三、为什么选择Nginx
原因一:IO多路复用epoll (主要解决了并发性的问题)
注1:多个描述符的I/O操作都能在一个线程内并发交替的顺序完成,这就叫做I/O多路复用,这里的“复用”指的是复用同一个线程。
注2:IO多路复用的实现方式有 select 、poll、epoll (逐渐进化)
原因二:轻量级
1、功能模块少(只保留了HTTP和其相关核心功能的模块)
2、代码模块化
原因三: CPU亲和(affinity)
注:cpu亲和是一种把cpu核心和Nginx工作进程绑定的方式,把每个worker进程固定在一个cpu上执行,减少切换cpu的cache,miss,获得更好的性能。
原因四:sendfile工作机制
四、Nginx 快速安装
注:Nginx官方下载页面:http://nginx.org/en/download.html
1. 编辑nginx yum源
vim /etc/yum.repos.d/nginx.repo
2. 将下面内容复制到这个文件上,然后保存。
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1
3. 执行yum安装
yum -y install nginx
reboot #重启系统
4. 确认nginx安装完成
nginx -v
注:
安装后nginx文件夹映射在本地windows上的目录如下
将Linux上文件映射到本地windows上教程: https://blog.csdn.net/m_nanle_xiaobudiu/article/details/80631437
五 Nginx 目录和配置语法
1. nginx安装目录
命令:rpm -ql nginx
2. Nginx 的配置语法(nginx.conf)
原始nginx.conf
user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; }http { include /etc/nginx/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 /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
参数解释:
user:设置nginx服务的系统使用用户(默认为nginx,非root)【更安全】
worker_processes: 工作进程数【最好与cpu核心数保持一致】
error_log:nginx的错误日志定义
pid:nginx服务启动时的pid【存放nginx pid的位置】
events部分:
worker_connections 每个进程允许最大连接数【一般调节到一万左右】
http部分:
logformat:定义日志类型
keeplive_timeout:设置客户端和服务端连接超时的时间
access_log: 访问日志
include /etc/nginx/conf.d/*.conf: 子配置文件( 大网站多站点可以在这里进行分开配置 )
3. 子配置文件格式
默认只有一个default.conf,当网站存在多个域名地址时,可以在子配置文件进行分开配置,比如这样
这样,nginx首先读取nginx.conf 配置文件, 我们在nginx.conf配置文件中进行一些基础公共部分的定义,然后在nginx.conf最末尾又include了conf.d文件夹向下的所有.conf文件
我们在conf.d文件夹下定义每一个站点域名的配置(比如包括网站根路径,重写规则,错误日志位置定义,访问日志位置定义等等,总之所有关于SERVER的定义通通在子配置文件中进行定义,而不是在nginx.conf中定义),比如下面这样
总结:
1. 在nginx.conf中定义基础公共部分配置
2. 在conf.d文件夹下分别定义每一个server的配置
3. 当然,习惯用phpstudy的同学也可以在nginx.conf文件末尾再include vhost.conf文件,也是可以的
server { listen 80; server_name test.passport.kk.com; charset utf-8; access_log logs/access/test.passport.kk.com.access.log main; error_log logs/error/test.passport.kk.com.log debug; root "G:/Faraway/data/passport/htdocs"; index index.html index.htm index.php; location /favicon.ico { log_not_found off; access_log off; }location / { if (!-e $request_filename) { rewrite ^/(.*)$ /index.php/$1 last; }}location ~ \.php(.*)$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; }location /doc { if (!-f $request_filename){ rewrite ^/doc/(.*)$ /doc/index.php/$1 last; }}location /api { if (!-f $request_filename){ rewrite ^/api/(.*)$ /api/index.php/$1 last; }}error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }}
Nginx初级 好文推荐 https://blog.csdn.net/u012486840/article/details/53098890