Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

502 Bad Gateway when installed Drupal on Nginx default server #1113

Closed
Corvalan opened this issue Jan 23, 2017 · 3 comments
Closed

502 Bad Gateway when installed Drupal on Nginx default server #1113

Corvalan opened this issue Jan 23, 2017 · 3 comments

Comments

@Corvalan
Copy link

Corvalan commented Jan 23, 2017

Boa uses out of the box this nginx configuration file for the default host:
var/aegir/config/server_master/nginx.conf
which contains this default server configuration section:

#######################################################
###  nginx default server
#######################################################

 server {
  listen        *:80;
  server_name  _;
  location / {
    expires 99s;
    add_header Cache-Control "public, must-revalidate, proxy-revalidate";
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    root   /var/www/nginx-default;
    index  index.html index.htm index.php;
  }
}

In order to install a Drupal 7 on the default server (not as an aegir site), I replaced this section with the following code specifically for Drupal (from https://www.nginx.com/resources/wiki/start/topics/recipes/drupal/):

#######################################################
###  nginx default server
#######################################################

server {
    server_name  _;
    root /var/www/nginx-default;

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    # Very rarely should these ever be accessed outside of your lan
    location ~* \.(txt|log)$ {
        allow 192.168.0.0/16;
        deny all;
    }

    location ~ \..*/.*\.php$ {
        return 403;
    }

    location ~ ^/sites/.*/private/ {
        return 403;
    }

    # Allow "Well-Known URIs" as per RFC 5785
    location ~* ^/.well-known/ {
        allow all;
    }

    # Block access to "hidden" files and directories whose names begin with a
    # period. This includes directories used by version control systems such
    # as Subversion or Git to store control files.
    location ~ (^|/)\. {
        return 403;
    }

    location / {
        # try_files $uri @rewrite; # For Drupal <= 6
        try_files $uri /index.php?$query_string; # For Drupal >= 7
    }

    location @rewrite {
        rewrite ^/(.*)$ /index.php?q=$1;
    }

    # Don't allow direct access to PHP files in the vendor directory.
    location ~ /vendor/.*\.php$ {
        deny all;
        return 404;
    }

    # In Drupal 8, we must also match new paths where the '.php' appears in
    # the middle, such as update.php/selection. The rule we use is strict,
    # and only allows this pattern with the update.php front controller.
    # This allows legacy path aliases in the form of
    # blog/index.php/legacy-path to continue to route to Drupal nodes. If
    # you do not have any paths like that, then you might prefer to use a
    # laxer rule, such as:
    #   location ~ \.php(/|$) {
    # The laxer rule will continue to work if Drupal uses this new URL
    # pattern with front controllers other than update.php in a future
    # release.
    location ~ '\.php$|^/update.php' {
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
        # Security note: If you're running a version of PHP older than the
        # latest 5.3, you should have "cgi.fix_pathinfo = 0;" in php.ini.
        # See http://serverfault.com/q/627903/94922 for details.
        include fastcgi_params;
        # Block httpoxy attacks. See https://httpoxy.org/.
        fastcgi_param HTTP_PROXY "";
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_intercept_errors on;
        # PHP 5 socket location.
        #fastcgi_pass unix:/var/run/php5-fpm.sock;
        # PHP 7 socket location.
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    }

    # Fighting with Styles? This little gem is amazing.
    # location ~ ^/sites/.*/files/imagecache/ { # For Drupal <= 6
    location ~ ^/sites/.*/files/styles/ { # For Drupal >= 7
        try_files $uri @rewrite;
    }

    # Handle private files through Drupal. Private file's path can come
    # with a language prefix.
    location ~ ^(/[a-z\-]+)?/system/files/ { # For Drupal >= 7
        try_files $uri /index.php?$query_string;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }
}

However, after installing Drupal in /var/www/nginx-default, it gives the error message
502 Bad Gateway

I checked var/log/nginx/error.log and it contains this error:

2017/01/23 23:29:58 [crit] 6893#0: *138 connect() to unix:/var/run/php/php7.0-fpm.sock failed (2: No such file or directory) while connecting to upstream, client: 127.0.0.1, server: _, request: "GET /nginx_status HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.0-fpm.sock:", host: "127.0.0.1"

How can this be solved?

@omega8cc
Copy link
Owner

It is a duplicate of #1112, already answered there.

@Corvalan
Copy link
Author

Not really a duplicate, more like a follow-up based on your suggestion in #1112 since #1112 is about configuring an aegir drupal site as default.
You answered there that this is not possible, and that the correct way is to use aliases for the default site.

Thats perfectly fine, and therefore I thought I need to have a drupal site as default site in
/var/www/nginx-default; using a default nginx conguration instead of the aegir configuration.
This question is not about aliases in the first place, just to make drupal show up as default site and being able to create aliases as second step.

Or am I completely wrong here?

@omega8cc
Copy link
Owner

I think I have already answered this very clearly in #1112 which does makes your another attempt a duplicate. It is incorrect and not even possible. Just create a proper site on Octopus and add aliases to it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants