尝试使用Nginx在我的CentOS 7 VPS上安装phpBB(3.2.7),并得到403、502错误或默认页面

SKNB

我正在尝试使用Nginx在我的CentOS 7 VPS上安装phpBB(3.2.7),并且不断出现这些错误:

  • 403-禁止
  • Nginx默认页面显示Web服务器正在运行,但是尝试访问http://1.2.3.4/install时为404 (安装phpBB时需要)
  • 502错误的网关(当前困境)

以下是我的/etc/nginx/nginx.cfg

user    nginx nginx;

events {
    worker_connections  1024;
}

http {
    include     /etc/nginx/mime.types;

    # Compression - requires gzip and gzip static modules.
    gzip on;
    gzip_static on;
    gzip_vary on;
    gzip_http_version 1.1;
    gzip_min_length 700;

    # Compression levels over 6 do not give an appreciable improvement
    # in compression ratio, but take more resources.
    gzip_comp_level 6;

    # IE 6 and lower do not support gzip with Vary correctly.
    gzip_disable "msie6";
    # Before nginx 0.7.63:
    #gzip_disable "MSIE [1-6]\.";

    # Catch-all server for requests to invalid hosts.
    # Also catches vulnerability scanners probing IP addresses.
    server {
        # default specifies that this block is to be used when
        # no other block matches.
        listen 80 default;

        server_name bogus;
        return 444;
        root /var/empty;
    }

    # NOTE: uncommenting this section causes the program to print to console: 
    #'nginx: [warn] conflicting server name "1.2.3.4" on 0.0.0.0:80, ignored'
    # Typing in my VPS IP results in 414 - URI Too Large 
    # http://1.2.3.4/1.2.3.4/1.2.3.4/1.2.3.4 ...

    # If you have domains with and without www prefix,
    # redirect one to the other.
    #server {
    #    # Default port is 80.
    #    listen 80;
    #    server_name 1.2.3.4;
         # A trick from http://wiki.nginx.org/Pitfalls#Taxing_Rewrites:
    #    return 301 1.2.3.4$request_uri;
    #}

    # The actual board domain.
    server {
        listen [::]:80;
        listen 80;
        server_name 1.2.3.4;
        root /var/www/html/mydomain.com/phpBB-3.2.7;

        location / {
            # phpBB uses index.htm
            index index.php index.html index.htm;
            try_files $uri $uri/ @rewriteapp;
        }

        location @rewriteapp {
            rewrite ^(.*)$ /app.php/$1 last;
        }

        # Deny access to internal phpbb files.
        location ~ /(config\.php|common\.php|cache|files|images/avatars/upload|includes|(?<!ext/)phpbb|store|vendor) {
            deny all;
            # deny was ignored before 0.8.40 for connections over IPv6.
            # Use internal directive to prohibit access on older versions.
            internal;
        }

        # Pass the php scripts to fastcgi server specified in upstream declaration.
        location ~ \.php(/|$) {
            # Unmodified fastcgi_params from nginx distribution.
            include fastcgi_params;
            # Necessary for php.
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
            fastcgi_param DOCUMENT_ROOT $realpath_root;
            try_files $uri $uri/ /app.php$is_args$args;
            fastcgi_pass php;
        }

        # Correctly pass scripts for installer
        location /install/ {
            # phpBB uses index.htm
            try_files $uri $uri/ @rewrite_installapp;

            # Pass the php scripts to fastcgi server specified in upstream declaration.
            location ~ \.php(/|$) {
                # Unmodified fastcgi_params from nginx distribution.
                include fastcgi_params;
                # Necessary for php.
                fastcgi_split_path_info ^(.+\.php)(/.*)$;
                fastcgi_param PATH_INFO $fastcgi_path_info;
                fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
                fastcgi_param DOCUMENT_ROOT $realpath_root;
                try_files $uri $uri/ /install/app.php$is_args$args;
                fastcgi_pass php;
            }
        }

        location @rewrite_installapp {
            rewrite ^(.*)$ /install/app.php/$1 last;
        }

        # Deny access to version control system directories.
        location ~ /\.svn|/\.git {
            deny all;
            internal;
        }
    }

    # If running php as fastcgi, specify php upstream.
    upstream php {
        server 127.0.0.1:9000;
    }
}

其他资讯:

  • 更改了以下行/etc/php.ini

    max_execution_time = 180
    max_input_time = 60
    memory_limit = 256M
    upload_max_filesize = 64M
    
  • 我使用的是静态IP,因为我正在等待从以前的托管公司转移我的域。我假设我可以将VPS的静态IP(例如1.2.3.4)放置在实际域中,并在转移后用域替换它?

SKNB

因此,我固定了它,不确定到底是什么把戏弄了什么,但不确定上面的注释是否是昂贵的绕道而行,这给了我们一个值得信赖的宝贵经验的教训。

/etc/nginx/nginx.cfg

user        nginx nginx;
error_log   /var/log/nginx.error_log info;  # [ debug | info | notice | warn | error | crit ]

events {
    worker_connections   4096;
}

http {
    include     mime.types;
    include     /etc/nginx/sites_enabled/*.conf;
    server_names_hash_bucket_size 64;

    # Compression - requires gzip and gzip static modules.
    gzip on;
    gzip_static on;
    gzip_vary on;
    gzip_http_version 1.1;
    gzip_min_length 700;

    # Compression levels over 6 do not give an appreciable improvement
    # in compression ratio, but take more resources.
    gzip_comp_level 6;

    # IE 6 and lower do not support gzip with Vary correctly.
    gzip_disable "msie6";
    # Before nginx 0.7.63:
    #gzip_disable "MSIE [1-6]\.";

    # Catch-all server for requests to invalid hosts.
    # Also catches vulnerability scanners probing IP addresses.
    server {
        # default specifies that this block is to be used when
        # no other block matches.
        listen         80 default_server;
        listen         [::]:80 default_server;

        server_name bogus;
        return 444;
        root /var/empty;
    }

    # If running php as fastcgi, specify php upstream.
    upstream php {
        server 127.0.0.1:9000;
    }
}

/etc/nginx/sites_available/exampledomain.com.conf

server {
    listen          80;
    server_name     exampledomain.com www.exampledomain.com;
    root            /var/www/html/exampledomain.com/phpBB-3.2.7;

    location / {
        # phpBB uses index.htm
        index index.php index.html index.htm;
        try_files $uri $uri/ @rewriteapp;
    }

    location @rewriteapp {
        rewrite ^(.*)$ /app.php/$1 last;
    }

    # Deny access to internal phpbb files.
    location ~ /(config\.php|common\.php|cache|files|images/avatars/upload|includes|(?<!ext/)phpbb|store|vendor) {
        deny all;
        # deny was ignored before 0.8.40 for connections over IPv6.
        # Use internal directive to prohibit access on older versions.
        internal;
    }

    # Pass the php scripts to fastcgi server specified in upstream declaration.
    location ~ \.php(/|$) {
        # Unmodified fastcgi_params from nginx distribution
        include fastcgi_params;

        # Necessary for php
        fastcgi_split_path_info  ^(.+\.php)(/.*)$;
        fastcgi_param   PATH_INFO $fastcgi_path_info;
        fastcgi_param   SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param   DOCUMENT_ROOT $realpath_root;
        try_files   $uri $uri/ /app.php$is_args$args;
        fastcgi_pass    php;
    }

    # Correctly pass scripts for installer
    location /install/ {
        # phpBB uses index.htm
        try_files $uri $uri/ @rewrite_installapp;

        # Pass the php scripts to fastcgi server specified in upstream declaration.
        location ~ \.php(/|$) {
            # Unmodified fastcgi_params from nginx distribution.
            include fastcgi_params;

            # Necessary for php.
            fastcgi_split_path_info     ^(.+\.php)(/.*)$;
            fastcgi_param PATH_INFO     $fastcgi_path_info;
            fastcgi_param SCRIPT_FILENAME   $realpath_root$fastcgi_script_name;
            fastcgi_param DOCUMENT_ROOT $realpath_root;

            try_files $uri $uri/ /install/app.php$is_args$args;
            fastcgi_pass php;
        }
    }

    location @rewrite_installapp {
        rewrite ^(.*)$ /install/app.php/$1 last;
    }

    # Deny access to version control system directories.
    location ~ /\.svn|/\.git {
        deny all;
        internal;
    }
}

注意事项:

  • 为了避免麻烦,我将服务器块移到了/etc/nginx/nginx.conf一个单独的文件中,/etc/nginx/sites_available其中的符号链接为/etc/nginx/sites_enabled
  • IPv4地址已由exampledomain.com取代。这是因为我的域名是在OP和此答案之间转移的,因此我不再需要使用IP。
  • 必须降级到PHP 7.2才能使phpBB正常工作;不成功尝试一些导游后,我用这个指南实现它在这里

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章