.htaccess / rewrite kuralları için nginx desteği? Apache'den Farklar?


16

Apache http sunucularıyla uzun süredir çalışıyorum ve son olarak diğer dinamik içerikli makinelerin yanında statik içerikli sunuculara geçiyorum.

Merak ediyordum, nginx ".htaccess" dosyalarını ve mod_rewrite gibi şeyleri destekliyor mu?

Sözdizimine çok alışkın olduğum için, (sözdizimi) farklılıklarının ne olduğunu ve Apache yapılandırmalarından nginx'e geçmek gibi öğrenme eğrisinin ne olduğunu merak ediyordum.

Yanıtlar:


15

nginx yeniden yazma sözdizimi mod_rewrite'teki karşılıktan çok daha temiz:

mod_rewrite kuralı:

 RewriteRule ^[a-z0-9_-]*-f([0-9]+)/?(p([0-9]+)\.html)?$ /viewforum.php?f=$1&start=$3 [QSA,L,NC]

Nginx'te olur:

rewrite ^/[a-z0-9_-]*-f([0-9]+)/?(p([0-9]+)\.html)?$ /viewforum.php?f=$1&start=$3 last;

Ama .htaccess desteği yok ...

Düzenleme: nginx'te http://example.com/~kullaniciadi/ url'leri nasıl destekleyeceğiniz başka bir örnek :

location ~ /~([a-zA-Z0-9]*)/(.*) {
    root /home/;
    autoindex on;
    index index.html;
    rewrite ^/~([a-zA-Z0-9]*)/(.*)$ /$1/www/$2 break;
}


4

Nginx'in bir mod_rewrite eşdeğeri olduğu anlaşılıyor ve dokümantasyon burada bulunabilir . Nginx'i kendim kullanmadım, ancak dokümantasyon yapılandırma tamamen farklı gibi görünüyor, ancak ne yaptığını anlamak çok zor olmamalı. Wiki'nin çok sayıda örneği var gibi görünüyor.

Apache ile olabildiğince dizin konfigürasyon dosyalarınız varsa cevaplayamıyorum. Mümkünse beni şaşırtmaz, çünkü insanlar bunu apache kullanmaktan bekler.


0

NGINX, 'include' yönergesi ile birçok dosyada konfigürasyona sahip olmayı destekler. Temel olarak, bir alt konfigürasyon yükler ve yerine koyar. Ayrıca joker karakterlerini de destekler, bu nedenle birçoğunu tek seferde yüklemek kolaydır.

Tek sınırlama (bence), yapılandırma değiştirildiğinde yeniden yüklemeniz gerektiğidir. Bu nedenle, bir yapılandırma parçası olan herhangi bir kullanıcının nginx config'i yeniden yüklemek için haklara ihtiyacı olabilir:

/etc/ini.d/nginx zorla yükleme (centos'ta)

Bundan kaçınmanın veya farklı bir şekilde yapmanın bir yolu olup olmadığını gerçekten bilmiyorum çünkü NGINX'i kendim olan birçok uygulama (sanal ana bilgisayar) olan birçok sunucuda kullanıyorum. Bu NGINX'in paylaşılan barındırma konusunda ideal olmadığı anlamına gelir.

Yine de NGINX'i çok seviyorum çünkü yapılandırma kötü bir XML dosyasından çok daha okunaklı. Zevk meselesi sanırım. Diğer iyi bir nokta, sizin durumunuzda önemliyse, hızdır.

İyi şanslar mig

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.