• 13-03-2023, 15:04:11
    #1
    Merhabalar,
    kullanmış olduğum scriptte root klasörü belirtmem gerekiyor. buda /var/www/html/web içersinde ve beliirtiyorum.

    siteadi.com giriş yapınca web klasoru root oluyor. siteadi.com/belge/ bölümüne gidilginde ise var/www/html/belge klasörüne gidilip oradaki php dosyasını çalıştırmak istiyorum. Nasıl yapabilirim?

    server {
    
            root /var/www/html/web;
            index index.html index.htm index.nginx-debian.html;
    
            server_name siteadi.com www.siteadi.com;
    
        location / {
            try_files $uri /app.php$is_args$args;
        }
    
        location ~ ^/(app_dev|config)\.php(/|$) {
            fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
            fastcgi_param DOCUMENT_ROOT $realpath_root;
        }
        # PROD
        location ~ ^/app\.php(/|$) {
            fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
            fastcgi_param DOCUMENT_ROOT $realpath_root;
            internal;
        }
    
        listen [::]:443 ssl ipv6only=on; # managed by Certbot
        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/siteadi.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/siteadi.com/privkey.pem; # managed by Certbot
        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    
    
        add_header Strict-Transport-Security "max-age=31536000" always; # managed by Certbot
    
    
        ssl_trusted_certificate /etc/letsencrypt/live/siteadi.com/chain.pem; # managed by Certbot
        ssl_stapling on; # managed by Certbot
        ssl_stapling_verify on; # managed by Certbot
    
    }
    server {
        if ($host = siteadi.com) {
            return 301 https://$host$request_uri;
        } # managed by Certbot
    
    
            listen 80;
            listen [::]:80;
    
            root /var/www/html/web;
            index index.html index.htm index.nginx-debian.html;
    
            server_name siteadi.com www.siteadi.com;
    
            location / {
                    try_files $uri $uri/ =404;
            }
    
    
    }
  • 13-03-2023, 15:10:22
    #2
    Merhaba @nurettin;

    URL (siteadi.com/belge/) ile PATH (var/www/html/belge) birbirinden farklı kavramlardır. URL adres satırında oluşturulan sanal bir yolu belirtirken, PATH dosyanın disk üzerinde fiziksel olarak bulunduğu yolu işaret eder.

    Kısaca yapmak istediğin şey nginx conf dosyası ile değil script içindeki yönlendirme (routing) ile çözülmesi gereken bir işlemdir. Umarım yardımcı olmuştur.
  • 13-03-2023, 15:11:52
    #3
    solokod adlı üyeden alıntı: mesajı görüntüle
    Merhaba @nurettin;

    URL (siteadi.com/belge/) ile PATH (var/www/html/belge) birbirinden farklı kavramlardır. URL adres satırında oluşturulan sanal bir yolu belirtirken, PATH dosyanın disk üzerinde fiziksel olarak bulunduğu yolu işaret eder.

    Kısaca yapmak istediğin şey nginx conf dosyası ile değil script içindeki yönlendirme (routing) ile çözülmesi gereken bir işlemdir. Umarım yardımcı olmuştur.
    bunu nginx üzerinden yapmamız imkanı yok mu diyorsunuz?

    siteadi.com/belge/xxx.php dosyaları çalıştırılırsa eğer /var/www/html/belge/xxx.php dosyasının çalıştırılmasını istiyorum.
  • 13-03-2023, 15:54:20
    #4
    location /test {
    alias /var/www/test;
    }
    yaptığım zaman çalışıyor ama php dosyalarını indiriyor.

    location ~ ^/test {
    root /var/www/html/test; 
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
    }
    şeklinde denedim yine php dosyalarını indiriyor çözüm nedir sizce?
  • 13-03-2023, 16:11:29
    #5
    Merhaba @nurettin;

    Çözüm önceki mesajımda da belirtiğim gibi script içinden istediğin yönlendirmeyi yapmak olacaktır. Nginx'in seni dosya indirmeye yönlendirmesi normal çünkü sen ondan direk dosyayı talep ediyorsun. Oysa php dosyayaları çalışan dosyalardır. Yani önce bir php engine üzerinde işlenip elde edilen çıktının geri dönmesi gerekir. Anlatması uzun sürer kısaca yukarıda URL ve PATH farklı kavramlar derken bunu anlatmak istemiştim.
  • 13-03-2023, 17:12:52
    #6
    Eğer başka arkadaşa gerekirse aşagıdaki kod çalışmaktadır. Kendi php versiyonunuza göre ayarlıyabilirsiniz.

        location ~ ^/deneme {
            alias  /var/www/html/deneme;
            location ~ /([^/]+\.php)$ {
            try_files /$1 =404;
            fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
        }