Elastic Beanstalk 自定义 Nginx 配置

Elastic Beanstalk 自定义 Nginx 配置

我正在设置一个新的 Amazon Linux 2/PHP/NGINX 环境,但我对 Nginx 不太熟悉,因为我上一个 Elastic Beanstalk 环境是 Amazon Linux/PHP/Apache。(Amazon 将代理从 Apache 更改为 Nginx,底层平台从 Amazon Linux 升级到 AL2)

以前,我有一个 .htaccess 文件来处理多个域名,每个域名都有一个对应的文件夹,用于提供服务。但是,我知道 .htaccess 文件不适用于 Nginx。

到目前为止,我已经尝试将配置文件添加到 .ebextensions 文件夹,内容如下:

files:
  "/etc/nginx/sites-available/example.com.conf":
    mode: "000644"
    owner: root
    group: root
    source: https://someothersite.com/example.com.conf

所引用的源(example.com.conf)包含以下内容:

server {
        listen 80;
        root /var/www/html/example.com;
        index index.html index.php;
        server_name example.com;
   location / {
       try_files $uri $uri/ =404;
   }
}

我认为我需要创建一个符号链接,因此在 .ebextensions 文件夹中我有另一个包含以下内容的配置文件:

commands:
  10_link:
    command: sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com

执行此 ln 命令后,我在构建过程中收到错误。如果我不执行该命令,则不会收到错误,但它不起作用(不会提供 example.com/test.php)

我最后一次尝试是在 .ebextensions 文件夹中不执行任何操作,而是创建了 .platform/nginx/conf.d/custom.conf,内容如下

server {
            listen 80;
            root /var/www/html/example.com;
            index index.html index.php;
            server_name example.com;
       location / {
           try_files $uri $uri/ =404;
       }
    }

这似乎更接近,因为 example.com/test.php 正在转到文件,但服务器却提示浏览器下载 php 文件。

答案1

  1. 为了测试目的,您只需在 /etc/nginx/sites-enabled 文件夹中创建文件即可

  2. 对于多个域名,您可以使用

    服务器名称*.domain1.com custom.domain2.com;

  3. 最后,我们需要通过 FastCGI(您可以在 Ubuntu 上安装它apt-get install php7.0-fpm)接口到 PHP-FPM 处理所有 PHP 文件。

    server {
    listen       80;
    
    server_name  mydomain.com; 
    
    access_log  /var/log/nginx/access.log  combined; 
    location / { 
        root   /var/www/html; 
        try_files $uri $uri/ /index.php?$args;     
    } 
    location ~ \.php$ { 
        fastcgi_pass unix:/var/run/php7.0-fpm.sock; 
        fastcgi_index index.php; 
        fastcgi_param SCRIPT_FILENAME 
         $document_root$fastcgi_script_name; 
        include fastcgi_params; 
    } }
    

相关内容