Pazar, Aralık 22, 2024

NGINX’de XenForo Yapılandırma

yüksek çözünürlüklü nginx logosu

Özellikle forum sahibi bir kaç arkadaşımız geçtiğimiz günlerde bana ulaşarak abi NGINX’de XenForo nasıl yapılandırabiliriz diye sordu kendilerine anlattım. URL rotalarında sorun yaşayan herkesin derdine derman olacak şekilde gerekli olan yapılandırma dosyasını aşağıya bırakıyorum.

  • XenForo 1 ve 2 sürümü ile uyumludur.
  • SEO uyumlu rotalar için oluşturulmuştur.
  • libraries ve internal_data gibi belli başlı yerlere dışarıdan erişim kapatılmıştır.
server {
    listen                  443 ssl http2;
    listen                  [::]:443 ssl http2;
    server_name             forum.mertcangokgoz.com;
    set                     $base /var/www/forum.mertcangokgoz.com;
    root                    $base/public;

    # SSL
    ssl_certificate         /etc/letsencrypt/live/forum.mertcangokgoz.com/fullchain.pem;
    ssl_certificate_key     /etc/letsencrypt/live/forum.mertcangokgoz.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/forum.mertcangokgoz.com/chain.pem;

    # security
    add_header X-Frame-Options           "SAMEORIGIN" always;
    add_header X-XSS-Protection          "1; mode=block" always;
    add_header X-Content-Type-Options    "nosniff" always;
    add_header Referrer-Policy           "no-referrer-when-downgrade" always;
    add_header Content-Security-Policy   "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

    # . files
    location ~ /\.(?!well-known) {
        deny all;
    }

    # security.txt
    location /security.txt {
        return 301 /.well-known/security.txt;
    }

    location = /.well-known/security.txt {
        alias ~/security.txt;
    }

    # logging
    access_log              /var/log/nginx/forum.mertcangokgoz.com.access.log;
    error_log               /var/log/nginx/forum.mertcangokgoz.com.error.log warn;

    # index.php
    index                   index.php;

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

    location ~ ^/(internal_data|library|src|install)/(.*)$ {
        internal;
    }

    location /install/data/ {
        internal;
    }

    location /install/templates/ {
        internal;
    }
 
    # handle .php
    location ~ \.php$ {
        # 404
        try_files                     $fastcgi_script_name =404;

        # default fastcgi_params
        include                       fastcgi_params;

        # fastcgi settings
        fastcgi_pass                  unix:/var/run/php/php-fpm.sock;
        fastcgi_index                 index.php;
        fastcgi_buffers               8 16k;
        fastcgi_buffer_size           32k;

        # fastcgi params
        fastcgi_param DOCUMENT_ROOT   $realpath_root;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param PHP_ADMIN_VALUE "open_basedir=$base/:/usr/lib/php/:/tmp/";
    }
}

# subdomains redirect
server {
    listen                  443 ssl http2;
    listen                  [::]:443 ssl http2;
    server_name             *.forum.mertcangokgoz.com;

    # SSL
    ssl_certificate         /etc/letsencrypt/live/forum.mertcangokgoz.com/fullchain.pem;
    ssl_certificate_key     /etc/letsencrypt/live/forum.mertcangokgoz.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/forum.mertcangokgoz.com/chain.pem;
    return                  301 https://forum.mertcangokgoz.com$request_uri;
}

# HTTP redirect
server {
    listen      80;
    listen      [::]:80;
    server_name .forum.mertcangokgoz.com;

    location ^~ /.well-known/acme-challenge/ {
        root /var/www/_letsencrypt;
    }

    location / {
        return 301 https://forum.mertcangokgoz.com$request_uri;
    }
}

Yapılandırmayı kendinize göre değiştirmeyi ihmal etmeyiniz. Bu yapılandırmayı kullanabilmek için minimum NGINX 1.14.0 sürümü yüklü olmalıdır.