网络编程
位置:首页>> 网络编程>> php编程>> PHP程序员玩转Linux系列 nginx初学者引导

PHP程序员玩转Linux系列 nginx初学者引导

作者:陶士涵  发布时间:2023-11-21 19:51:16 

标签:Linux,nginx

PHP程序员玩转Linux系列文章:

1.PHP程序员玩转Linux系列-怎么安装使用CentOS

2.PHP程序员玩转Linux系列-lnmp环境的搭建

3.PHP程序员玩转Linux系列-搭建FTP代码开发环境

4.PHP程序员玩转Linux系列-备份还原MySQL

5.PHP程序员玩转Linux系列-自动备份与SVN

6.PHP程序员玩转Linux系列-Linux和Windows安装nginx

翻译自官网文档

nginx有一个master进程和很多个worker进程.master进程的主要目的是读取和执行配置文件,维持worker进程.worker进程真正处理请求.nginx基于事件模型和操作系统来分配worker进程,配置文件中的worker进程数一般配置成CPU的内核数.默认的配置文件名是nginx.conf,目录地址一般在/usr/local/nginx/conf, /etc/nginx, 或者/usr/local/etc/nginx

开始,关闭和重载配置

nginx 开启

nginx -s reload 重新载入配置文件

nginx -s quit 优雅的退出

nginx -s reopen 重新打开日志文件

静态内容服务

打开配置文件,里面已经包含了一个server块的例子


http {
server {
}
}

默认的nginx配置文件nginx.conf里面,使用include指令包含了/etc/nginx/conf.d/此目录下后缀为.conf的所有配置文件


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;
}

在/etc/nginx/conf.d/目录下,编辑default.conf文件,通常会有很多的配置文件,每个配置文件中都有一个server块,nginx通过他们监听的端口和server_name来区分,它还会对请求头和server块里面location指令参数比较.


server {
location / {
root /var/www/html;
}
}

这个location块指定了"/"前缀,比较请求的URI,对于匹配到的URI,这个URI会被拼接到root指令指定路径的后面.换句话说,在本地文件系统中去构成路径,就是去请求/var/www/html.

如果这里有很多location指令,nginx会选择最长前缀的.上面的location块提供了一个最短前缀,只有当其他所有的location都没有匹配到,才会使用它.

下一步,增加第二个localtion块


server {
location / {
root /var/www/html;
}
location /images/ {
root /data;
}
}

当请求以/images/开始,第二个location将会匹配到 (location / 也会匹配到这个请求,但是他的前缀比第二个短)

现在它已经可以作为web服务的配置文件正常工作了,监听80端口.在本地机器输入http://localhost就可以访问到该服务.当请求URI以/images/开头,服务器会响应/data/images目录下的文件.举例:当请求是http://localhost/images/example.png,nginx会响应/data/images/example.png文件.如果该文件不存在,nginx会响应404错误.

当请求的URI不以/images/开头,该请求会被映射到/var/www/html目录.举例:请求的URI是http://localhost/some/example.html,nginx会响应/var/www/html/some/example.html文件.

应用新的配置,开启nginx或者发送reload信号给nginx的master进程,执行以下命令:

nginx -s reload

万一有不可预料的错误发生,去access.log 和error.log中找原因,这两个文件的目录在/usr/local/nginx/logs或者/var/log/nginx

配置简单的反向代理服务

nginx最常用的功能就是作为反向代理服务器,意味着这个服务要接收请求,把请求引到被代理的服务,从那里取回响应,发送给客户端.

我们将配置基本的反向代理服务器,这个服务处理来自本地目录的图片文件的请求,并把其他的所有请求发给代理服务器.在这个例子中,两个服务都会被定义在一个nginx实例中.

首先,定义一个代理服务器,在nginx配置文件中新添加一个server块,如下:


server {
listen 8080;
root /data/up1;

location / {
}
}

这个简单的服务监听8080端口(之前,我们没有使用过listen指令,因为默认是监听的80端口),映射所有的请求到本地文件系统的/data/up1目录.创建这个目录,在里面放入index.html文件.注意root指令放在了server上下文了.当location块下没有root指令时,这个root指令将会被使用.

下一步,使用上一步中的服务配合,修改一下作为反向代理服务器配置.在第一个location块中,添加一个proxy_pass指令,在参数中指明协议名和代理服务的端口(在本例,它是http://localhost:8080)


server {
location / {
 proxy_pass http://localhost:8080;
}

location ~ \.(gif|jpg|png)$ {
 root /data/images;
}
}

在第二个location块中,参数是个正则表达式,匹配所有后缀是.gif.jpg或者.png的请求,使用正则表达式,应该在前面加上~ .符合的请求将会被映射到/data/images目录下

配置FastCGI代理服务

nginx可以用作去路由请求到FastCGI服务,这样就可以运行一些各种框架和PHP的应用

最基本的nginx配置,使用fastcgi_pass指令替换proxy_pass指令,fastcgi_param指令设置传递给FastCGI服务器的参数.假定FastCGI服务器运行在localhost:9000.把上一部分中的反向代理配置例子拿过来,修改参数为localhost:9000.在PHP中,SCRIPT_FILENAME参数被用作确定脚本名称,QUERY_STRING 被用作传递请求参数,配置如下:


server {
location / {
fastcgi_pass localhost:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
}

location ~ \.(gif|jpg|png)$ {
root /data/images;
}
}

现在就创建了一个服务,这个服务将路由出了静态图片文件之外的所有请求到被代理的服务器.这个被代理的服务器是通过FastCGI协议运行在localhost:9000上的.

来源:http://www.cnblogs.com/taoshihan/p/6674019.html

0
投稿

猜你喜欢

  • 问题:如何把具有相同字段的记录删除,只留下一条。   例如:表test里有id,name字段,如果有name相同的记录只留下一条,
  • 一个单步的动作,用了这个脚本,就可以重复执行100遍1000遍。上面就是一个路径描边100遍的效果,吼吼~ 不知道大家明白用处没有?(以前老
  • 漂亮的代码是漂亮网站的基础,优秀的 CSS 只存在与同样优秀的 HTML 之上,干净的,语义的 HTML 代码让一个网站更健壮。本文讲述了1
  • 无头模式添加,可以让selenium模拟登录,进入到后台运行这里以登录打开公司内网下载数据为例,因为涉及私密问题,所以有些地方我们进行覆盖,
  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&
  • 这十则CSS技巧汇编于网络,作为老手已经司空见惯了,也没有什么新意,但温故而知新,或许阅读一遍也有一定的启发,本文主要面对CSS新手朋友,有
  •     在安排Web页面的布局时,最常用的方法之一是用HTML表格界定页面的结构。例如,假设Web页面由顶端的
  • PHP simplexml_load_file() 函数实例转换 XML 文件为 SimpleXMLElement 对象,然后输出对象的键和
  • 一、简介:1、cron包cron包:"github.com/robfig/cron/v3"文档:cron package
  • CSS入门很简单,规则不多,写法也比较灵活,因此也带来了很多有创意的写法。跟IE一样,很好的容错性,像《 边框样式写法总结 》所说的bord
  • 大家都知道一些论坛的标题有高亮显示功能,在这里我不讨论也不研究论坛普遍的实现方法,下面是我的实现方法:实现思路:把要高亮显示的标题加上特定标
  • 本文实例为大家分享了bootstrap响应式工具的具体代码,供大家参考,具体内容如下<!DOCTYPE html><htm
  • javascript中的数组对象捆绑了强大的方法因此它可以用很简短的代码实现强大的数组操作而这些功能要C或者c++实现的话可能需要花费几倍的
  •  今天在写BLOG的Trackback时,需要用到当前页的URL地址,并且包括?后的所有参数。在网上看到以下的这段ASP代码,它的
  • 你知道SQL Server这么庞大的企业级数据库服务器产品是如何build出来的吗?这有些相关的数据:每个build 的大小在300GB左右
  • 完成asp语言对XML文档中指定节点文本的增加、删除、修改、查看 <%   '-------------------
  • 所谓“评论”不是必须得有文本框,用户录入提交数据才算,广义上的评论包括用户的任何“表态”,典型如打分。我接触电子商务时间并不长,最早应该是0
  • 网页设计是由很多个不同的元素构成的,而这些元素的重要性都不同,并且有些元素还需要尤为的突出.有些元素彼此之间存在着联系,而另外的元素之间则一
  • 在实际的工作和学习中,许多人的SQL Server 2005数据库日志文件可能会发生损坏,例如硬件故障、计算机非正常重启或关机等等。在SQL
  • 今天在工作中遇到了一个问题,需要按时间查询,可是查询出来的结果显示的不正确。举个例子来说,要查找出2007-10-12至2007-10-31
手机版 网络编程 asp之家 www.aspxhome.com