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 配置文件
里面, 使用 include 指令包含了
- nginx.conf
此目录下后缀为
- /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/
文件, 通常会有很多的配置文件, 每个配置文件中都有一个 server 块, nginx 通过他们监听的端口和 server_name 来区分, 它还会对请求头和 server 块里面 location 指令参数比较.
- default.conf
- 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;
- }
- }
当请求以
开始, 第二个 location 将会匹配到 (
- /images/
也会匹配到这个请求, 但是他的前缀比第二个短)
- location /
现在它已经可以作为 web 服务的配置文件正常工作了, 监听 80 端口. 在本地机器输入
就可以访问到该服务. 当请求 URI 以
- http://localhost
开头, 服务器会响应
- /images/
目录下的文件. 举例: 当请求是
- /data/images
,nginx 会响应
- http://localhost/images/example.png
文件. 如果该文件不存在, nginx 会响应 404 错误.
- /data/images/example.png
当请求的 URI 不以
开头, 该请求会被映射到
- /images/
目录. 举例: 请求的 URI 是
- /var/www/html
,nginx 会响应
- http://localhost/some/example.html
文件.
- /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
文件. 注意 root 指令放在了
- index.html
上下文了. 当
- server
块下没有 root 指令时, 这个 root 指令将会被使用.
- location
下一步, 使用上一步中的服务配合, 修改一下作为反向代理服务器配置. 在第一个
块中, 添加一个
- location
指令, 在参数中指明协议名和代理服务的端口 (在本例, 它是 http://localhost:8080)
- proxy_pass
- server {
- location / {
- proxy_pass http: //localhost:8080;
- }
- location~\. (gif | jpg | png) $ {
- root / data / images;
- }
- }
在第二个 location 块中, 参数是个正则表达式, 匹配所有后缀是
- .gif
或者
- .jpg
的请求, 使用正则表达式, 应该在前面加上
- .png
. 符合的请求将会被映射到
- ~
目录下
- /data/images
nginx 可以用作去路由请求到 FastCGI 服务, 这样就可以运行一些各种框架和 PHP 的应用
最基本的 nginx 配置, 使用
指令替换
- fastcgi_pass
指令,
- proxy_pass
指令设置传递给 FastCGI 服务器的参数. 假定 FastCGI 服务器运行在
- fastcgi_param
. 把上一部分中的反向代理配置例子拿过来, 修改参数为
- localhost:9000
. 在 PHP 中,
- localhost:9000
参数被用作确定脚本名称,
- 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