介绍
Nginx有一个主进程和几个工作进程(Worker_processes)。主进程的目的主要是测试读取配置和维护Worker进程。请求由工作进程处理。工作进程的数量在配置文件中定义,一般为CPU核心数。
Nginx及其模块的工作方式都是在配置文件中确定的。默认情况下该配置文件被命令为“nginx.conf”,源码安装一般放置在“安装目录/conf/”,RPM安装一般方式在“/etc/nginx/”。
抄录官方文档:https://nginx.org/en/docs/beginners_guide.html
启动、停止、重新加载配置
要启动Nginx,请运行可执行文件(命令文件)”nginx“。源码安装命令文件一般放置在“安装目录/sbin/”。
----------------------------------------------------------------------------------------------------------
nginx -s stop --关闭服务
nginx -s quit --优雅的关闭服务
nginx -s reload --重新加载配置文件
nginx -s reopen --重新打开日志文件
----------------------------------------------------------------------------------------------------------
配置文件结构
主要配置:配置运行用户、Worker进程数等。
事件配置:配置事件驱动模型(处理请求方式),每个Worker进程的处理请求数等。
HTTP配置:配置HTTP(超文本传输协议),即WEB服务。
虚拟主机:配置WEB站点(虚拟主机),监听地址端口、域名绑定等,允许有多个虚拟主机,即可在一台服务器上发布多个WEB站点。
目录位置:配置WEB站点下的WEB应用(网页)存放位置。匹配URL查询。
了解location
在Nginx,"location { }"定义要发布的目录位置,而location本身是一个匹配请求URi的语句(指令)。如果匹配到则就交由“{ }”处理。
URi:叫统一资源标识符,在Nginx中标识一个资源路径,即“location / { }”,“/”则为URi标识路径,而“{ }”则为定义的内容,即资源。则URi表示URL后面的虚根部分。示例:“http://www.baidu.com/index.html”
location语法:location[链接符号] URi
链接符号
/ :通用匹配,只要是“/”开头的都可以匹配到。
= :精确匹配,只匹配指定URi请求。
^~ :无正则匹配,无正则的匹配的任何指定URi的请求。
~ :区分大小写正则的匹配。
~* :不区分大小写正则的匹配。
示例:
# 匹配任意以“/”开始的请求,如果存在长的URi时则正则匹配优先。
location / {
root html;
index index.html;
}
# 只匹配“/”。
location = / {
root html;
index index.html;
}
# 无正则匹配任何以“/server/”开始的请求,不会再匹配下面的正则“location”部分
location ^~ /server/ {
root html/server;
index index.html;
}
# 区分大小写正则匹配以“.php”结尾的请求。
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
}
# 不区分大小写正则匹配以“.jpg、.png、jpeg、.ico”结尾的请求。
location ~* \.(jpgpngjpegico)$ {
root html/image;
}
发布静态内容
首先创建一个要发布的WEB目录,如“/www/html/”,然后将任意的“index.html”首页静态文件放到目录里面。
然后打开配置文件“nginx.conf”,配置如下(示例):
http {
server {
listen 80;# 指定地址端口,如果无地址则表示使用所有地址
server_name localhost;
location = / {# 匹配“/”请求
root /www/html;# 指定WEB应用(网页)存放目录
index index.html index.htm;# 指定首页文件
}
}
}
设置简单的反向代理服务器
Nginx经过使用的一种方法就是将其设置为反向代理服务器。当客户端(浏览器)请求WEB时,由Nginx代理向后端WEB服务器获取页面数据,然后反馈给客户端。而用户本人并不知道是通过代理访问的WEB,他以为是由Nginx代理提供的WEB。增加了后端真实WEB服务器的安全性。
我们定义两个“location”位置,当用户访问所有数据(包含WEB首页文件)的时候由第一个location定义,由Nginx代理向后端真实WEB服务器获取数据,而当用户访问的是以.jpg、.png格式结尾的图片数据的时候则交由第二个location定义。这样就可以实现数据分离,减轻后端WEB的压力的同时并加快了图片加载速度。
配置示例:
http {
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://192.168.1.10:8080;
# 将所有的请求代理交由后端服务器处理
proxy_set_header Host $host;
# 设置代理请求头部,$host主机名
proxy_set_header X-Real-IP $remote_addr;
# 设置代理请求头部,$remote_addr客户端IP
}
location ~ \.(jpgpng)$ {
root/www/html/image;
}
}
}
设置FastCGi代理
Nginx可用于将请求转发到运行各种框架和编程语言(如:PHP)构建的应用程序的FastCGi服务器。,FastCGi是一种连接外部程序的程序接口,可以与外部程序一直保持连接状态。Nginx的FastCGi代理实际也是一种反向代理方式,通过FastCGi反代PHP,可以实现对动态页面PHP的解析。
配置示例:
http {
server {
listen 80;
server_name localhost;
location / {
root html;
index index.php index.html index.htm;
# 设置“/”位置的首页文件为“index.php”
}
location ~ \.php$ {
fastcgi_pass localhost:9000;
# 设置代理的FastCGi服务器地址,即PHP服务器地址
fastcgi_param SCRIPT_FILENAME/usr/local/nginx/html/php$fastcgi_script_name;
# 设置要传递给FastCGi服务器解析的WEB应用(网页)根目录位置
fastcgi_index index.php;
# 设置FastCGi服务器解析的WEB应用(网页)首页文件
include fastcgi_params;
# 指定Nginx自带的对FastCGi服务器的配置文件,包含FastCGI的基础配置
}
}
}
作用说明:
location作用:
设置“/”位置的首页文件为“index.php”,当用户在浏览器输入“www.baidu.com”的时候,由浏览器自动补全地址“http://www.baidu.com/”,而这个后缀“/”则就表示匹配到了配置文件中的“location/”位置,然后由“location /”提供里面定义的首页文件,这个时候请求的原始的地址(浏览器地址不变)则会变成“http://www.baidu.com/index.php”,则就会被第二个定义的“location~ \.php$”匹配到,进而交由后端的PHP服务器解析处理并返回数据给客户端(浏览器)。
处理过程:
服务端(服务器)处理:http://www.baidu.com/----->http://www.baidu.com/index.php
location匹配过程:
匹配到第一个“location /”:http://www.baidu.com/
匹配到第二个“location ~ \.php$”
领取专属 10元无门槛券
私享最新 技术干货