Nginx简单配置(Windows环境)

一. 安装Nginx

将下载后的nginx压缩包解压到某个目录下,比如:D:\program\myplatform\Nginx\nginx-1.10.0,解压后的目录结构为:

Nginx简单配置(Windows环境)_第1张图片

二. 开始配置

配置目标:能正常运行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服务器。

你可能感兴趣的:(PHP,Nginx)