首页 » SEO优化 » nginxphp站点设置技巧_Nginx的入门介绍

nginxphp站点设置技巧_Nginx的入门介绍

访客 2024-11-14 0

扫一扫用手机浏览

文章目录 [+]

nginx -s <signal>

signal可以是以下旗子暗记之一:

nginxphp站点设置技巧_Nginx的入门介绍

stop: 快速关机

nginxphp站点设置技巧_Nginx的入门介绍
(图片来自网络侵删)

quit: 正常关机

reload: 重新加载配置文件

reopening: 重新打开日志文件

如果要停滞Nginx进程,等待事情进程完成当前要求,可以实行以下命令:

nginx -s quit

​在诸如kill运用程序等Unix工具的帮助下,也可以向Nginx进程发送旗子暗记。
在这种情形下,一个旗子暗记被直接发送到指定进程ID的进程。
Nginx主进程的ID在默认情形下,被写入在/usr/local/nginx/logs或者/var/run目录下的nginx.pid文件当中。
如果Nginx的主进程ID为1628,要发送退出旗子暗记,优雅的关闭Nginx,我们可以这样:

nginx -s QUIT 1628

配置文件的构造

Nginx由模块组成,模块由配置文件中指定的指定掌握。
指令分为大略指令和块指令。
一个大略的指令由名称和参数组成,用空格分割,以分号结束。
块指令具有与大略指令相同的构造,但不是分号,而是一组由大括号包围的附加指令。
如果一个块指令可以在大括号中包含其他指令,那么它被称为高下文(例如:events、http、server和location)

任何放置在高下文外部的配置文件中的指令被认为是在主高下文中。
events和http指令驻留在主高下文中,server驻留在http当中,location驻留在server当中。

个中“#”后面都代表是注释内容

顶级高下文有:

events: 处理常规连接

http: http要求

mail: 邮件

stream: TCP和UDP

​在每个http高下文中,都包含一个或多个server块来定义掌握要求处理的虚拟做事器。
对付http高下文,每个server指令掌握对特定域或IP地址上的资源要求的处理。
每个server高下文中包含一个或多个location块来处理特定的Uri集。
对付mail或者stream高下文,server指令分别掌握到达特定TCP端口或UNIX套接字的通信处理。

常日子高下文继续父高下文中包含的指令的设置。
一些指令可以涌如今多个高下文当中,在这种情形之下,子高下文中的指令会覆盖父高下文中的同名指令。

供应静态内容

Web做事器的一项主要任务是分发文件。
首先,我们先做一些准备事情,创建/user/image目录,并放置一个favorite.png图片。
接下来,我们来修正一下/etc/nginx/sites-enabled目录下的default文件(此文件安装Nginx完后存在),在server高下文中添加一个location块指令,如下:

location /image/ {

root /user;

}

​修正保存之后,重启Nginx。
对付匹配的要求,会将URL添加到root指定指定的路径,即添加到/user中,形成/user/image/便是我们本地文件系统上所要求文件的路径。
我们在浏览器中访问http://localhost/image/favorite.png就能精确定位到图片了!
如果有多个location块,将匹配前缀最长的的那个!
个中root指令指定目录!

如果某些功能无法正常事情,你可以查看/var/log/nginx/access.log或/var/log/nginx/error.log文件来查找缘故原由!

设置大略的代理做事器

Nginx的一个常见用法是将其设置为代理做事器,这意味着做事器吸收要求,将其通报给代理做事器,从代理做事器检索相应并将其发送给客户机。
我们将配置一个基本的代理做事器,它利用本地目录中的文件夹来处理图像要求,并将所有要求发送到做事器中。
在本例中,这两个做事器定义在一个Nginx实例中,如下:

server {

listen 8080;

root /user/data;

location / {

index index.html;

}

}

​这是一个大略的做事器,它监听端口8080(如果没有指定listen指令,将默认监听80端口),并将所有的要求映射到本地文件系统上的/user/data目录。
需先创建该目录,并将index.html文件放置在该目录当中,否则要求将会引发404缺点!

把稳,当做事要求的location块不包含root指令时,就会利用高下文中的root指令!

下面,我们将修正一下配置,将成为代理做事器配置,如下:

server {

listen 80;

location / {

proxy_pass http://localhost:8080;

}

location /image/ {

root /user;

}

}

在第一个location块中,利用proxy_pass指令与参数中的协议、代理做事器的名称和端口放在一起。
我们还可以对location做一些正则匹配,如下:

location ~ \.(png|jpg|gif)$ {

root /user;

}

​如此,要求匹配所有以.gif、.jpg和.gif结尾的Uri。
正则表达式的前面该当加上~,表示将利用正则表达式进行匹配!

设置FastCGI代理

Nginx可用于将要求路由到FastCGI做事器,FastCGI做事器运行各种框架和编程措辞(如PHP)构建的运用程序。
利用FastCGI做事器最基本的Nginx配置包括利用fastcgi_pass指令替代proxy_pass指令,利用facgi_param指令设置通报给FastCGI做事器的参数。
假设FastCGI做事器可以在localhost:9000上访问。
以上一节中的代理配置为根本,将fastcgi_pass指令替代proxy_pass指令,并将参数变动为localhost:9000。
在PHP中,SCRIPT_FILENAME参数用于确定脚本,QUERY_STRING参数用于通报要求参数。
配置如下:

server {

location / {

fastcgi_pass localhost:8080;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_param QUERY_STRING $query_string;

}

location ~ \.(png|jgp|gif)$ {

root /user;

}

}

这将设置一个做事器,通过FastCGI协议将静态图像要求外的所有要求路由到localhost:9000上运行的代理做事器!

​基于名称的虚拟做事器

Nginx首先确定哪个做事器应处理该要求,让我们从一个大略的配置开始,下面三个虚拟做事器都在监听80端口,如下:

server {

listen 80;

server_name example.org www.example.org;

...

}

server {

listen 80;

server_name example.net www.example.net;

}

server {

listen 80;

server_name example.com www.example.com;

}

​在上面配置当中,Nginx只检测要求的标头字段“Host”以确定将要求路由到哪个做事器。
如果其值与任何做事器都不匹配,或者要求根本不包含此标头字段,则Nginx会将要求路由到该端口的默认做事器。
在上面的配置当中,默认做事器是第一个做事器,这是Nginx的标准默认行为。
也可以在listen指令中利用default_server参数设置哪个做事器该当是默认的,如下:

server {

listen 80 default_server;

server_name example.net www.example.net;

}

值得把稳的是,default_server是侦听端口的属性,而不是做事器名称的属性。
自0.8.21版本以来,default_server就可以利用了,但是在更早的版本前,应利用default参数

如何防止未定义的做事器名称处理要求

如果不许可不带“主机”标头字段的要求,则可以定义仅丢弃要求的做事器:

server {

listen 80;

server_name "";

return 444;

}

在这里,做事器名称设置为空字符串,该字符串将匹配没有“Host”头字段的要求,并且返回分外的Nginx的非标准代码444,以关闭连接。
自从版本0.8.48开始,这是做事器名称的默认设置,因此server_name可以省略。

基于名称和基于IP的稠浊虚拟做事器

下面来看一个更为繁芜的配置,个中一些虚拟做事器侦听不同的地址:

server {

listen 192.168.1.1:80;

server_name example.org www.example.org;

}

server {

listen 192.168.1.1:80;

server_name example.net www.example.net;

}

server {

listen 192.168.1.2:80;

server_name example.com www.example.com;

}

在上面配置中,Nginx首先根据server块的listen指令检测要求的IP地址和端口。
然后,它根据与IP地址和端口匹配的server块的server_name指令检测要求的“Host”标头字段。
如果找不到做事器名称,则默认做事器将处理该要求。
例如,192.168.1.1:80端口上吸收到的要求将由192.168.1.1:80端口的默认做事器(即第一台做事器)处理。

一个大略的PHP站点配置

现在让我们看一下Nginx处理一个范例的、大略的PHP站点的要求,如下:

server {

listen 80;

server_name example.org www.example.org;

root /data/www;

location / {

index index.html index.php;

}

location ~ \.(png|jpg|gif)$ {

expires 30d;

}

location ~ \.php$ {

fastcgi_pass localhost:9000;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

}

​无论列出的顺序如何,Nginx都会首先搜索笔墨字符串所给出的最特定的前缀location。
在上面的配置当中,唯一的前缀location是“/”,由于它匹配任何要求,以是它将被用作末了的手段。
然后Nginx按照配置文件中列出的顺序检讨正则表达式给出的location。
第一个匹配的表达式将停滞搜索,Nginx将利用这个location。
如果没有正则表达式的匹配要求,则Nginx利用前面找到的最特定的前缀的location。

把稳,所有类型的location只检测要求的Uri部分,没有参数。
这样做是由于查询字符串中的参数可能以几种办法给出,如下:

/index.php?user=john&page=1

/index.php?page=1&user=john

此外,任何人都可以在查询字符串中要求任何东西:

/index.php?page=1&something+else&user=john

现在让我们看一下上面配置中如何处理要求:

要求logo.gif首先与前缀location“/”匹配,然后与正则表达式\.(png|jpg|gif)$匹配,因此,要求由后一个location匹配。
利用伪指令root /data/www将要求映射到文件/data/www/logo.gif,然后将文件发送到客户端

要求index.php也首先与前缀location“/”匹配,然后与正则表达式\.php$匹配。
因此,要求由后一个location匹配,并且要求被通报到了localhost:9000上侦听的FastCGI做事器上。
fastcgi_param指令将FastCGI参数SCRIPT_FILENAME设置为/data/www/index.php,作为FastCGI的做事器实行文件。
变量document_root等同于root指令的值,变量fastcgi_script_name等同于要求的Uri,即index.php.

要求about.html仅与前缀location“/”匹配,因此在该location进行处理。
利用伪指令root /data/www将要求映射到文件/data/www/about.html,然后将文件发送到客户端

处理要求/更为繁芜,它仅与前缀location“/”匹配,因此由该location处理。
然后index指令根据其参数root /data/www指令检测文件的存在。
如果文件/data/www/index.html不存在,但是文件/data/www/index.php存在,则该指令内部将重定向到index.php,并且Nginx将再次搜索location,就彷佛要求是由客户端发送的一样。
如前所述,重定向的要求终极将由FastCGI做事器处理

在上面栗子当中,我们看到要求FastCGI做事器时,须要利用fastcgi_pass替代proxy_pass,个中uwsgi、SCGI、memcached或gRPC做事也分别利用uwsgi_pass、scgi_pass、memcached_pass和grpc_pass指令替代proxy_pass!

山东掌趣网络科技。

标签:

相关文章