[Linux] PHP程序员玩转Linux系列-nginx初学者引导
1.PHP程序员玩转Linux系列-怎么安装使用CentOS
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
上的.
[Linux] PHP程序员玩转Linux系列-nginx初学者引导的更多相关文章
- [Linux] PHP程序员玩转Linux系列-lnmp环境的搭建
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 在平常的工作中,我作为PHP程序员经常要搭建一下环境,这个环境就是Linux系统下安装nginx,php,mysql这三个软件,对软件进行 ...
- [Linux] PHP程序员玩转Linux系列-搭建代码开发环境
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 有些同学可能觉得我写的都是啥yum安装的,随便配置一下而已,没啥技术含量,我的目的 ...
- [Linux] PHP程序员玩转Linux系列-备份还原MySQL
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 前几天有个新闻,说是g ...
- [Linux] PHP程序员玩转Linux系列-自动备份与SVN
我的代码经常在开发修改,为了代码的安全性,比如哪天误删了文件,或者哪天改错东西了,可以恢复回来,我要搞代码备份.备份代码,我先做最简单的,使用linux的定时机制加shell命令打包文件,每天按日期保 ...
- [Linux] PHP程序员玩转Linux系列-Linux和Windows安装nginx
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...
- [Linux] PHP程序员玩转Linux系列-Nginx中的HTTPS
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...
- [Linux] PHP程序员玩转Linux系列-使用supervisor实现守护进程
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...
- [Linux] PHP程序员玩转Linux系列-telnet轻松使用邮箱
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...
- [Linux] PHP程序员玩转Linux系列-升级PHP到PHP7
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...
随机推荐
- 第三章:初识Jquery
一.Jquery的优势 体积小,压缩后只有100KB左右 强大的选择器 出色的DOM封装 可靠的事件处理机制 出色的浏览器兼容性 使用隐式迭代简化编程 丰富的插件支持 二.Jquery语法 三.DOM ...
- Visual Studio Code 中编写 C++ 的工作流
1. 官网下载 Visual Studio Code ,安装.按提示安装 cpp 插件和 cmake 插件. 官网下载 CMake ,安装. 官网下载 Mingw ,安装. 安装 Mingw 时,注意 ...
- 无向图的完美消除序列 判断弦图 ZOJ 1015 Fish net
ZOJ1015 题意简述:给定一个无向图,判断是否存在一个长度大于3的环路,且其上没有弦(连接环上不同两点的边且不在环上). 命题等价于该图是否存在完美消除序列. 所谓完美消除序列:在 vi,v ...
- angular : ng-options
基本调用,得到name 属性 <select ng-model="target" ng-options="obj.name as obj.name for obj ...
- iOS回顾笔记(03) -- 自定义View的封装和xib文件的使用详解
iOS回顾笔记(03) -- 自定义View的封装和xib文件的使用详解 iOS开发中,我们常常将一块View封装起来,以便于统一管理内部的子控件.如iOS回顾笔记(02)中的"书" ...
- [转载]解决win10 VC++6.0 应用程序无法正常运行 0xc0000142
本文转载自http://blog.csdn.net/w_9449/article/details/52864135 转载请申明哦,其实我发现自从我在贴吧发了帖子后,就冒出了不少帖子.经验.当然方法和我 ...
- smarty实例登陆、显示、分页
1.先建立登陆页面,登陆页面的PHP文件和HTML文件是分开写的. 先建立一个登陆页的PHP文件, <?php include("../init.inc.php");//引入 ...
- 前端基本知识(四):JS的异步模式:1、回调函数;2、事件监听;3、观察者模式;4、promise对象
JavaScript语言将任务的执行模式可以分成两种:同步(Synchronous)和异步(Asychronous). “同步模式”就是一个任务完成之后,后边跟着一个任务接着执行:程序的执行顺序和排列 ...
- JavaWeb之Servlet总结
今天上班居然迟到了,昨天失眠了,看完吐槽大会实在不知道做些什么,刚好朋友给我发了两个JavaWeb的练习项目,自己就又研究了下,三四点才睡,可能周日白天睡的太多了,早上醒来已经九点多了,立马刷牙洗脸头 ...
- Spring Data JPA 简单查询--接口方法
一.接口方法整理速查 下表针对于简单查询,即JpaRepository接口(继承了CrudRepository接口.PagingAndSortingRepository接口)中的可访问方法进行整理.( ...