使用Digital Ocean通过IP在Nginx服务器上配置多站点

时间:2018-10-13 21:00:53

标签: php codeigniter nginx nginx-config

问题:无法访问由一台Nginx服务器处理的两个网站,即<<ip-address>><<ip-address>>/web2

数字海洋上的配置:

  1. 1个Droplet / Ubuntu 18 / LEMP
  2. 我在CodeIgniter框架中有两个测试PHP网站
  3. 第一个网站的文件夹配置:/var/www/html/web1/
  4. 第二个网站的文件夹配置:/var/www/html/web2/

两个站点的Nginx服务器块配置

web1.com

server {
        listen 80;
        root /var/www/html/web1;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name <<ip-address>>;

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

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }
}

web2.com

server {
        listen 80;
        root /var/www/html/web2;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name <<ip-address>>/web2;

        location /web2/ {
                try_files $uri $uri/ /index.php;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }
}

我对nginx服务器完全陌生,我是根据数字海洋下社区提供的文档来做的。

请帮助!

谢谢。

1 个答案:

答案 0 :(得分:1)

您要尝试的不是nginx开箱即用的方式。经过很多摆弄,它可能最终会以这种方式工作,但我认为这样做是不值得的。

请参阅,nginx配置期望server_name是FQDN(完全限定域名)或IP地址,而不是带有路径的完整URL。 在您的情况下,对ip-address / web2的请求实际上可能与web1的配置匹配(因此将您指向不存在的/var/www/html/web1/web2/

解决此问题的最佳方法(假设您要将两个站点都放在同一液滴上):为每个站点获取一个FQDN。它可能是您已经拥有的域的子域(例如,web1.sharad.com和web2.sharad.com)...然后在每个nginx的配置文件上使用适当的服务器名称(web1.sharad.com和web2.sharad) .com),请使用sudo nginx -t检查输入错误和错误,如果一切正常,请使用sudo systemctl restart nginx

重新启动nginx