# Özel nginx yapılandırması

> Bir siteye kendi nginx direktiflerinizi güvenle ekleyin; WebSocket, düzgün URL'ler, yönlendirmeler, başlıklar, zaman aşımları.

Bazı uygulamalar ek web sunucusu yapılandırması ister: gerçek zamanlı özellikler için WebSocket, düzgün URL'ler, daha büyük yüklemeler, yönlendirmeler ya da ek başlıklar. **nginx** çalışan sunucularda sitenin **nginx** bölmesi, sitenin server bloğuna kendi direktiflerinizi eklemenizi sağlar.

## Direktif ekleme

1. Siteyi açın ve **nginx**'i seçin.
2. Direktiflerinizi düzenleyiciye yazın ya da bir örnekten başlayın: **WebSocket**, **Düzgün URL'ler**, **Büyük yüklemeler**, **Yönlendirme**, **Güvenlik başlıkları**.
3. **Uygula**'ya tıklayın ve passkey'inizle onaylayın.

Yeni yapılandırma devreye girmeden önce nginx onu kontrol eder (`nginx -t`). Kontrol başarısız olursa önceki yapılandırma geçerli kalır ve bölme nedenini gösterir. Direktiflerinizi kaldırmak için düzenleyiciyi boşaltıp uygulayın.

## Örnekler

Yerel bir portta dinleyen bir uygulamaya WebSocket (Laravel Reverb, Socket.IO…):

```nginx
location /app {
    proxy_pass http://127.0.0.1:8080;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_read_timeout 3600s;
}
```

Düzgün URL'ler (bilinmeyen her yol `index.php`'ye gider):

```nginx
location / {
    try_files $uri $uri/ /index.php?$args;
}
```

Bir yönlendirme ve daha büyük yüklemeler:

```nginx
rewrite ^/eski-blog/(.*)$ /blog/$1 permanent;
client_max_body_size 512m;
fastcgi_read_timeout 600s;
```

## Neye izin verilir

Direktifleriniz root olarak çalışan nginx içinde çalışır; bu yüzden yalnızca site düzeyindeki direktifler kabul edilir:

- **İzin verilenler**: `location` ve `if` blokları, `rewrite`, `return`, `try_files`, `set`, `error_page`, başlıklar (`add_header`, `expires`), `proxy_*` (`http://` ya da `https://` adreslere), bu sitenin kendi PHP havuzu için `fastcgi_*`, zaman aşımları, gövde boyutları, `gzip`, `sub_filter`, `allow`/`deny`, `limit_rate`.
- **Reddedilenler**: `include`, `root`, `alias`, `load_module`, gömülü diller (Lua, Perl, njs), sertifikalar, başka yere yazılan log dosyaları, unix soketlerine `proxy_pass`; kısacası sitenin dışına uzanabilecek her şey.

Kendi `location /` bloğunuz (uygulama sitelerinde `@app`) sitenin varsayılanının yerine geçer; böylece bilinmeyen yolların nasıl ele alınacağını değiştirebilirsiniz.

## OpenLiteSpeed

OpenLiteSpeed sunucularında **nginx** bölmesi gösterilmez: yönlendirme kurallarını OpenLiteSpeed'in okuduğu sitenin `.htaccess` dosyasına yazın.

---
Kaynak: https://zefily.com/tr/docs/ozel-nginx
