1. 问答
  2. 问答详情

配置 Nginx 和 PHP

配置nginx对php的支持

Nginx的配置文件默认位置为:/etc/nginx/nginx.conf

# nginx运行的用户名
user nginx;
# nginx启动进程,通常设置成和cpu的数量相等,这里为自动
worker_processes auto;
# errorlog文件位置
error_log /var/log/nginx/error.log;
# pid文件地址,记录了nginx的pid,方便进程管理
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/nginx/README.dynamic.
# 用来加载其他动态模块的配置
include /usr/share/nginx/modules/*.conf;
# 工作模式和连接数上限
events {    
    # 每个worker_processes的最大并发链接数
    # 并发总数:worker_processes*worker_connections
    worker_connections 1024;
}
# 与提供http服务相关的一些配置参数类似的还有mail
http {    
    # 设置日志的格式
    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记录访问的用户、页面、浏览器、ip和其他的访问信息
    access_log  /var/log/nginx/access.log  main;    
    
    # 这部分下面会单独解释
    # 设置nginx是否使用sendfile函数输出文件
    sendfile            on;    
    # 数据包最大时发包(使用Nagle算法)
    tcp_nopush          on;    
    # 立刻发送数据包(禁用Nagle算法)
    tcp_nodelay         on;    
    # 链接超时时间
    keepalive_timeout   65;    
    # 这个我也不清楚...
    types_hash_max_size 2048;    
    # 引入文件扩展名与文件类型映射表
    include             /etc/nginx/mime.types;    
    # 默认文件类型
    default_type        application/octet-stream;    
    
    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;    
    
    # http服务上支持若干虚拟主机。
    # 每个虚拟主机一个对应的server配置项
    # 配置项里面包含该虚拟主机相关的配置。
    server {        
        # 端口
        listen       80 default_server;        
        listen       [::]:80 default_server;        
        # 访问的域名
        server_name  _;        
        # 默认网站根目录(www目录)
        root         /usr/share/nginx/html; 
               
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;  
              
        # 默认请求
        location / {
        }        
        # 错误页(404)
        error_page 404 /404.html;            
        location = /40x.html {
        }       
         # 错误页(50X)
        error_page 500 502 503 504 /50x.html;            
        location = /50x.html {
        }
    }
}


1个回答

0

采纳

能正常启动php脚本的最简nginx vhost配置


server{ 
        listen 80;
        server_name php.com
              
        # 这里新加的
        # PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI协议默认配置.
        # Fastcgi服务器和程序(PHP,Python)沟通的协议.
        location ~ \.php$ {
            root /share/test;            
            # 设置监听端口
            fastcgi_pass   127.0.0.1:9000;            
            # 设置nginx的默认首页文件(上面已经设置过了,可以删除)
            fastcgi_index  index.php;            
            # 设置脚本文件请求的路径
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;            
            # 引入fastcgi的配置文件
            include        fastcgi_params;
        }
}

详细说明

1、第一个大括号 server{ }:代表一个独立的server,

2、listen 80:代表该server监听80端口

3、location ~ .php?.*${
}:代表一个能匹配对应uri的location,用于匹配一类uri,并对所匹配的uri请求做自定义的逻辑、配置。这里的location,匹配了所有带.php的uri请求,例如: http://192.168.244.128:8011/test.php/asdasd
http://192.168.244.128:8011/index.php等

4、root /share/test:请求资源根目录,告诉匹配到该location下的uri到/share/teset文件夹下去寻找同名资源。

5、fastcgi_pass 127.0.0.1:9000:这行代码的意思是,将进入到该location内的uri请求看做是cgi程序,并将请求发送到9000端口,交由php-fpm处理。

6、fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
:这行配置意思是:动态添加了一行fastcgi配置,配置内容为SCRIPT_FILENAME,告知管理进程,cgi脚本名称。由于我的nginx中只有fastcgi_params文件,没有fastcgi.conf文件,所以要使php-fpm知道SCRIPT_FILENAME的具体值,就必须要动态的添加这行配置。

7、include fastcgi_params; 引入fastcgi配置文件

重启Nginx服务

service nginx restart

当重启nginx之后,在/share/test目录下创建一个xx.php文件,输入<?php
echo "hello world"; ?>保存,然后在浏览器中访问localhost:8011/xx.php
就可以在网页上显示hello world了。

撰写答案

验证码
点击刷新