继上篇我们安装好 nginx 和 php 服务之后,接下来我们配置 nginx 解析 html 文件夹下的 php 文件。当我们安装好 nginx 服务后,我们输入虚拟机的 ip 地址时候,我们默认访问的时 80 端口,它默认显示们 /usr/local/nginx/html (这里根据你自己安装的位置) 文件夹下的 index.html 文件,即 nginx 的默认访问主页。如果我们想放置 php 文件进行访问,就必须配置 nginx 能够解析 php 脚本。接下来演示如何配置 nginx 服务通过 https (http+ssl) 进行访问以及解析 php 脚本文件。

# nginx 配置 https 访问

  1. 要配置 https 服务,首先 nginx 要支持 ssl 协议,如果是 yum 方式安装的,它会默认帮你下载 ssl 模块。注意如果是源码方式安装的,在进行编译安装时,需要加上 --with-http_ssl_module 选项 (参考我上篇文章)

  2. 生成自签名证书 (不受信任) 或去 ca 机构免费申请一个 https 证书 (受信任),这里演示自签名证书。如果是想搭建网站,可以去申请一个证书。然后配置 nginx.conf 文件中的 https 服务。

    • 第一步:生成公钥和私钥

      1
      2
      3
      4
      #rsa非对称加密算法
      #cret.key 私钥,这个可以自己命名
      #cret.pem 公钥,用样这个也可以自己命名
      openssl req -newkey rsa:4096 -nodes -keyout cret.key -x509 -days 365 -out cert.pem

      运行该命令之后,会在当前文件夹下生成 cret.key 和 cret.pem 两个文件。

    • 第二步:配置 /usr/local/nginx/conf/nginx.conf 文件,可以先备份,以免误操作。

      1
      2
      cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf_bak
      vim /usr/local/nginx/conf/nginx.conf

      打开 server {listen 443} 那段代码注释,如果没有直接添加,配置如下:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      server {
      listen 443 ssl ;
      server_name Localhost ;
      ssl certificate "/usr/Local/nginx/SSL/cert.pem"; #对应自己的公钥地址
      ssl_ certificate_ key "/usr/local/nginx/SSL/cert.key"; #对应自己的私钥地址
      ssl session cache shared:SSL: 1m;
      ssl session timeout 5m;
      ssl_ ciphers HIGH:!aNULL:!MD5;
      ssl prefer server_ ciphers on;
      Location / {
      root html ;
      index index . html index . htm;
      }
      }

  3. 最后去浏览器验证 https 是否配置成功。

    • 在浏览器中输入 https:// 虚拟机 ip 地址

    • 这里不安全是因为我们使用的是自签名证书,没关系,点击继续前往,就可以访问我们的主页了。

# 配置 nginx 解析 php 脚本文件

  1. 上一篇文章我们使用 Remi 模块安装的 php 服务,所以一些配置文件路径和 yum 直接安装的有些区别,这都无伤大雅,重要是如何配置这么文件?有那些文件需要配置?

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #当前PHP内存限制低于推荐值512MB。
    vim /etc/opt/remi/php74/php.ini
    memory_limit = 512M

    #如果你运行的是nginx而不是apache,修改
    vim /etc/opt/remi/php74/php-fpm.d/www.conf
    user = apache
    group = apache
    # Replace the values with
    user = nginx
    group = nginx
  2. 编辑 php.ini 文件: vim /etc/opt/remi/php74/php.ini

    • 找到 memory_limit 一行,将其改成 512M

    • cgi.fix_pathinfo 值设置为 0

  3. 创建用户 nginx

    1
    2
    groupadd nginx
    useradd -g nginx nginx
  4. 编辑 www.conf 文件,将 usergroup 的值都改成 nginx

  5. 执行如下命令将 php74 链接到系统环境变量中,就可以任意地方使用 php -v 了:

    1
    ln -s /opt/remi/php74/root/usr/bin/php /usr/bin/php
  6. 修改 nginx 配置文件: vim /usr/local/nginx/conf/nginx.conf

    • 首先去掉 user 注解,将其值改成 nginx

    • 接着修改 location 块,追加 index.phpnginx 服务器默认支持 index.php 为首页:

    • 最后配置 PHP 部分:

      1
      2
      3
      4
      5
      6
      location ~ \.php$ {
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
      }
  7. 最后我们在 /usr/local/nginx/html 下编写一个 php 测试文件,然后去浏览器进行访问。

    • 测试文件 test.php 内容:

      1
      2
      3
      <? php
      phpinfo(); #可以排查配置php是是否出错或漏配置模块
      ?>
    • 在浏览器输入 https:// 虚拟机 ip 地址 /test.php,可以看到能成功输出。

至此我们所有配置基本完成,如果有兴趣可以学习一下 php 动态网页编程语言,编写更加好看的网页页面。