dukungan nginx untuk aturan .htaccess / menulis ulang? Perbedaan dari Apache?

16

Saya telah bekerja dengan server Apache http untuk beberapa waktu, dan akhirnya beralih ke server konten statis bersama dengan mesin konten dinamis lainnya.

Saya bertanya-tanya, apakah nginx mendukung file ".htaccess", dan hal-hal seperti mod_rewrite?

Karena saya sangat terbiasa dengan sintaksis, saya bertanya-tanya apa perbedaan (sintaksis) itu, dan seperti apa kurva belajarnya bergerak dari konfigurasi Apache ke nginx.

pengecut anonim
sumber

Jawaban:

15

sintaks nginx menulis ulang jauh lebih bersih maka rekan di mod_rewrite:

aturan mod_rewrite:

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

Menjadi di nginx:

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

Tetapi tidak ada dukungan .htaccess ...

Sunting: Contoh lain cara mendukung http://example.com/~username/ url di nginx:

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

nginx memang menyediakan fungsionalitas penulisan ulang, periksa NginxHttpRewriteModule

Apa yang ingin Anda lakukan dengan .htaccess? Anda dapat mengatur nginx untuk Otentikasi Dasar dengan NginxHttpAuthBasicModule tetapi arahan konfigurasi AFAIK hanya dapat disimpan di nginx.conf

zarkdav
sumber
2
Pada dasarnya saya bertanya-tanya tentang pengaturan per-direktori. Saya akan pergi R FM sekarang. =)
pengecut anonim
4

Tampaknya nginx memang memiliki mod_rewrite equivelent dan dokumentasi dapat ditemukan di sini . Saya sendiri tidak menggunakan nginx, tetapi dokumentasi sepertinya konfigurasi yang sama sekali berbeda, tetapi seharusnya tidak terlalu sulit untuk memahami apa yang dilakukannya. Wiki tampaknya memiliki banyak contoh.

Saya tidak bisa menjawab jika Anda dapat memiliki file konfigurasi direktori seperti yang Anda dapat dengan apache. Itu tidak akan mengejutkan saya jika Anda bisa, karena orang-orang mengharapkan itu dari menggunakan apache.

David Pashley
sumber
0

NGINX TIDAK mendukung konfigurasi di banyak file melalui arahan 'include'. Pada dasarnya, ini memuat sub-konfigurasi dan meletakkannya di tempatnya. Ini juga mendukung karakter joker, sehingga mudah untuk memuat banyak dari mereka dalam satu kesempatan.

Satu-satunya batasan (menurut saya) adalah Anda perlu memuat ulang ketika konfigurasi diubah. Jadi setiap pengguna yang memiliki konfigurasi mungkin memerlukan hak untuk memuat ulang nginx config:

/etc/ini.d/nginx force-reload (on centos)

Saya tidak benar-benar tahu apakah ada cara untuk menghindarinya atau melakukannya secara berbeda karena saya menggunakan NGINX di banyak server dengan banyak aplikasi (virtual host) yang saya miliki. Ini berarti NGINX tidak ideal untuk shared hosting.

Namun demikian saya sangat suka NGINX karena konfigurasi jauh lebih mudah dibaca daripada file XML yang tidak menyenangkan. Pertanyaan selera saya kira. Poin bagus lainnya jelas kecepatan, jika itu penting dalam kasus Anda.

Selamat mencoba mig


sumber