在NGINX FastCGI Linux上解析HTML文件中的PHP时出现问题

在NGINX FastCGI Linux上解析HTML文件中的PHP时出现问题,php,html,nginx,fastcgi,Php,Html,Nginx,Fastcgi,我正在尝试将我的网站从LAMP迁移到AWS上Linux上的NGINX FastCGI,我在尝试解析网站上一些遗留的.htm文件中的PHP时遇到了问题 我尝试了以下列出的解决方案: 具体而言,我使用: location ~ \.(php|html|htm)$ { 及 在my/etc/nginx/sites available/mybrokensite.com和/etc/php-fpm.d/www.conf文件中 当我在浏览器中打开.htm文件时,我只得到一个空白页。当我查看源代码时,我

我正在尝试将我的网站从LAMP迁移到AWS上Linux上的NGINX FastCGI,我在尝试解析网站上一些遗留的.htm文件中的PHP时遇到了问题

我尝试了以下列出的解决方案:

具体而言,我使用:

location ~ \.(php|html|htm)$ {

在my/etc/nginx/sites available/mybrokensite.com和/etc/php-fpm.d/www.conf文件中

当我在浏览器中打开.htm文件时,我只得到一个空白页。当我查看源代码时,我会在文件中看到整个原始php和html。如果我用.php扩展名重命名该文件,它将解释php,并得到我希望在浏览器中看到的格式化html文件

我使用以下步骤设置我的NGINX FastCGI Wordpress服务器:

这是我的配置:

# Define the microcache path.
fastcgi_cache_path /etc/nginx/cache levels=1:2 keys_zone=microcache:100m inactive=60m;

# Redirect http traffic to https
server {
  listen [::]:80;
  listen 80;

  server_name www.mybrokensite.com mybrokensite.com;

  return 301 https://mybrokensite.com$request_uri;
}

# Redirect www https traffic to non-www https
server {
  listen 443 ssl;

  ssl_certificate_key /etc/sslmate/mybrokensite.com.key;
  ssl_certificate /etc/sslmate/mybrokensite.com.chained.crt;

  server_name www.mybrokensite.com;

  return 301 https://mybrokensite.com$request_uri;
}

server {
  listen 443 ssl;

  server_name mybrokensite.com;

  # Include defaults for allowed SSL/TLS protocols and handshake caches.
  include h5bp/directive-only/ssl.conf;

  # config to enable HSTS(HTTP Strict Transport Security) https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security
  # to avoid ssl stripping https://en.wikipedia.org/wiki/SSL_stripping#SSL_stripping
  add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";

  ssl_certificate_key /etc/sslmate/mybrokensite.com.key;
  ssl_certificate /etc/sslmate/mybrokensite.com.chained.crt;

  # Path for static files
  root /sites/mybrokensite.com/public;

  #Specify a charset
  charset utf-8;

  # Include the basic h5bp config set
  include h5bp/basic.conf;

  location / {
    index index.php;
    try_files $uri $uri/ /index.php?$args;
  }

  location ~ \.(php|html|htm)$ {
    fastcgi_cache  microcache;
    fastcgi_cache_key $scheme$host$request_method$request_uri;
    fastcgi_cache_valid 200 304 10m;
    fastcgi_cache_use_stale updating;
    fastcgi_max_temp_file_size 1M;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
    include        fastcgi_params;


    # Local variables to track whether to serve a microcached page or not.
    set $no_cache_set 0;
    set $no_cache_get 0;

    # If a request comes in with a X-Nginx-Cache-Purge: 1 header, do not grab from cache
    # But note that we will still store to cache
    # We use this to proactively update items in the cache!
    if ( $http_x_nginx_cache_purge ) {
      set $no_cache_get 1;
    }

    # If the user has a user logged-in cookie, circumvent the microcache.
    if ( $http_cookie ~* "comment_author_|wordpress_(?!test_cookie)|wp-postpass_" ) {
      set $no_cache_set 1;
      set $no_cache_get 1;
    }

    # fastcgi_no_cache means "Do not store this proxy response in the cache"
    fastcgi_no_cache $no_cache_set;
    # fastcgi_cache_bypass means "Do not look in the cache for this request"
    fastcgi_cache_bypass $no_cache_get;
  }
}

我的站点主要是一个Wordpress站点,其中包含一些带有php的遗留.htm文件。我是NGINX新手,非常感谢您的帮助。

您重新启动了
NGINX
并清除了浏览器缓存?使用
nginx-t
检查配置是否正常。我使用sudo服务php fpm restart和sudo服务nginx restart重新启动了。Nginx-t显示Nginx.conf语法正常,测试成功。如果您的站点由php和html混合组成,则应设置
index index.php index.htm index.html
包含.html文件,它应该在服务器块中,而不是位置/块中。感谢您的建议,但是将index.htm和index.html添加到索引只会使包含index.htm文件(ex)的旧文件夹解析为该文件夹中的index.htm或index.html文件。我的.htm文件中的php未得到解释的问题仍然存在。例如,仍然无法解释php。它只是一个原始文件。@Dan你找到解决方案了吗?
# Define the microcache path.
fastcgi_cache_path /etc/nginx/cache levels=1:2 keys_zone=microcache:100m inactive=60m;

# Redirect http traffic to https
server {
  listen [::]:80;
  listen 80;

  server_name www.mybrokensite.com mybrokensite.com;

  return 301 https://mybrokensite.com$request_uri;
}

# Redirect www https traffic to non-www https
server {
  listen 443 ssl;

  ssl_certificate_key /etc/sslmate/mybrokensite.com.key;
  ssl_certificate /etc/sslmate/mybrokensite.com.chained.crt;

  server_name www.mybrokensite.com;

  return 301 https://mybrokensite.com$request_uri;
}

server {
  listen 443 ssl;

  server_name mybrokensite.com;

  # Include defaults for allowed SSL/TLS protocols and handshake caches.
  include h5bp/directive-only/ssl.conf;

  # config to enable HSTS(HTTP Strict Transport Security) https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security
  # to avoid ssl stripping https://en.wikipedia.org/wiki/SSL_stripping#SSL_stripping
  add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";

  ssl_certificate_key /etc/sslmate/mybrokensite.com.key;
  ssl_certificate /etc/sslmate/mybrokensite.com.chained.crt;

  # Path for static files
  root /sites/mybrokensite.com/public;

  #Specify a charset
  charset utf-8;

  # Include the basic h5bp config set
  include h5bp/basic.conf;

  location / {
    index index.php;
    try_files $uri $uri/ /index.php?$args;
  }

  location ~ \.(php|html|htm)$ {
    fastcgi_cache  microcache;
    fastcgi_cache_key $scheme$host$request_method$request_uri;
    fastcgi_cache_valid 200 304 10m;
    fastcgi_cache_use_stale updating;
    fastcgi_max_temp_file_size 1M;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
    include        fastcgi_params;


    # Local variables to track whether to serve a microcached page or not.
    set $no_cache_set 0;
    set $no_cache_get 0;

    # If a request comes in with a X-Nginx-Cache-Purge: 1 header, do not grab from cache
    # But note that we will still store to cache
    # We use this to proactively update items in the cache!
    if ( $http_x_nginx_cache_purge ) {
      set $no_cache_get 1;
    }

    # If the user has a user logged-in cookie, circumvent the microcache.
    if ( $http_cookie ~* "comment_author_|wordpress_(?!test_cookie)|wp-postpass_" ) {
      set $no_cache_set 1;
      set $no_cache_get 1;
    }

    # fastcgi_no_cache means "Do not store this proxy response in the cache"
    fastcgi_no_cache $no_cache_set;
    # fastcgi_cache_bypass means "Do not look in the cache for this request"
    fastcgi_cache_bypass $no_cache_get;
  }
}