一. 安装Nginx
将下载后的nginx压缩包解压到某个目录下,比如:D:\program\myplatform\Nginx\nginx-1.10.0,解压后的目录结构为:
二. 开始配置
配置目标:能正常运行php脚本程序
大部分情况下,我们需要修改的配置文件只有一个,那就是nginx.conf,该文件位于conf目录下。具体配置项目为:
1. server_tokens off;
出于安全方面的考虑,最好是隐藏nginx版本号信息
2. listen 8088;
8088为监听端口,根据需要可以填写其它端口号
3. server_name localhost;
localhost为服务器访问名称,也就是我们在浏览器里输入的那个url地址
4. charset utf-8;
字符集编码
5. 工作目录
将如下配置
location / {
root html;
index index.html index.htm;
}
修改为:
location / {
root D:/javapro;
index index.php index.html index.htm;
}
root 定义了工作空间,也就是我们php项目所在的目录。
加入index.php是为了让nginx能够识别php脚本,否则,在访问php文件时,会出现直接下载的情况。
6. 整合php
将location ~ \.php配置部分的注释全部去掉,最终配置如下:
location ~ \.php$ {
root D:/javapro;
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
注意这里面的$document_root变量,它对应的内容就是root参数值,如果我们没有定义root参数或者把root注释掉,在访问php的时候,页面上就会出现No input file specified.提示。
7. 启动php-cgi
打开cmd命令窗口,切换到php的安装目录,执行php-cgi -b 127.0.0.1:9000,即可启动php-cgi,启动完成后,cmd窗口切勿关闭,否则php-cgi也会被关掉的。
特别提醒:只有在开启php-cgi的情况下,nginx才能正常访问php。
8. 重启nginx
打开cmd命令窗口,切换到nginx所在目录,执行nginx -s reload即可重启nginx。其它相关nginx相关命令如下:
启动:start nginx
停止:nginx -s stop
退出:nginx -s quit
三. 碰到的问题
1. No log handling enabled - turning on stderr logging
启动php-cgi过程中,如果报出这个错误,请把php.ini配置文件中的extension=php_snmp.dll注释掉。
2. 端口占用
Cannot bind/listen socket - [2] No such file or directory.
Couldn't create FastCGI listen socket on port 127.0.0.1:9000
启动php-cgi过程中,如果报类似这种错误,就表示9000端口被占用了,此时,我们可以换个端口试试。
3. 反向代理404 not found
以反向代理的方式访问php时,出现404 Not Found错误,这种情况,我们需要修改nginx的error_page配置项,如下:
将原来默认的error_page注释掉
#error_page 404 /404.html;
然后,重新定义error_page,如下:
error_page 404 @proxy;
@proxy对应的内容为:
location @proxy {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1;
}
保存后,重启nginx即可解决404 Not Found错误。
友情提醒:以反向代理的方式访问php时,就不需要配置php-cgi模块了。
四. 扩展
如何让nginx支持jsp访问?
nginx本身是不支持jsp等动态脚本的,但我们可以通过nginx反向代理的方式来支持jsp等动态页面的访问,即把jsp等动态页面的请求,转发给后端的tomcat服务器进行处理,具体配置如下:
在http下新建一个server虚拟机,内容为:
server {
listen 8089;
server_name localhost;
charset utf-8;
location ~ \.(jsp|action|do)$ {
proxy_pass http://127.0.0.1:8080;
}
location ~ \.(html|js|css|png|gif)$ {
root D:/program/myplatform/Tomcat/webapps/ROOT;
}
}
重启nginx后,通过http://localhost:8089/index.jsp即可访问到tomcat的欢迎页面。其中,http://127.0.0.1:8080是tomcat服务器的访问地址,proxy_pass将jsp等请求转发到了tomcat服务器的8080端口上,注意配置中的静态资源部分:
location ~ \.(html|js|css|png|gif)$ {
root D:/program/myplatform/Tomcat/webapps/ROOT;
}
如果去掉上面这段配置,通过http://localhost:8089/index.jsp将无法访问到jsp文件中的静态资源,从而造成页面布局错乱等问题。
同理,也可以通过这种方式来整合php页面的访问,但要事先安装好apache服务器。
网友评论