Kali ini saya ingin membuat artikel dari apa yang saya alami hari ini yaitu terkait dengan aplikasi web CodeIgninter dengan Nginx web server.
Saya membuat sebuah aplikasi dengan framework CodeIgniter, dan aplikasi ini sebenarnya sudah berjalan dengan normal pada Apache web server. Namun saat saya pindahkan ke laptop saya yang menggunakan Nginx web server, aplikasi tersebut terus tampil error "404 page not found" yang berarti saya tidak bisa mengakses aplikasinya, dikarenakan terburu-buru menyebabkan saya lupa untuk melakukan penyesuaian terhadap aplikasi itu.
Sebelum saya tuliskan cara mengatasi error tersebut, terlebih dahulu saya akan berikan contoh konfigurasi vhost nginx yang saya gunakan di laptop saya.
server {
listen 80;
root /usr/share/nginx/html/public_html/penggajian;
index index.html index.php index.htm;
server_name class.dev;
access_log /usr/share/nginx/html/public_html/penggajian/application/logs/access.log;
error_log /usr/share/nginx/html/public_html/penggajian/application/logs/error.log;
location / {
#autoindex on;
#try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
#try_files $uri =404;
try_files $uri /index.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_intercept_errors on;
}
location ~ /\.ht {
deny all;
}
}
listen 80;
root /usr/share/nginx/html/public_html/penggajian;
index index.html index.php index.htm;
server_name class.dev;
access_log /usr/share/nginx/html/public_html/penggajian/application/logs/access.log;
error_log /usr/share/nginx/html/public_html/penggajian/application/logs/error.log;
location / {
#autoindex on;
#try_files $uri $uri/ =404;
try_files $uri $uri/ /index.php;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
#try_files $uri =404;
try_files $uri /index.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_intercept_errors on;
}
location ~ /\.ht {
deny all;
}
}
Dari konfigurasi di atas, nginx sudah berjalan dengan baik tanpa error hanya saja aplikasinya tidak bisa diakses. Adapun yang menyebabkan aplikasi tersebut tidak bisa diakses adalah karena nama file controller. Perlu diketahui Nginx bersifat sensitif terhadap nama file controller, jika membuat nama file yang tidak sesuai maka aplikasi menjadi tidak dapat diakses. Berikut ini gambaran mengenai masalah yang saya alami.
welcome.php error |
Welcome.php success |
Dari kedua gambar diatas yang membedakan hanyalah huruf kapital diawal file. Pada awalnya semua file controller saya menggunakan huruf kecil dan hal itu menyebabkan error page not found, setelah diganti mengikuti cara di atas aplikasi sudah dapat diakses kembali.
Hal yang cukup sederhana tetapi bisa membuat bingung. Kira-kira seperti itulah cara saya mengatasinya, jika anda punya pengalaman ataupun tahu cara yang lebih bagus untuk mengatasinya anda dapat berbagi pada komentar dibawah.
Hal yang cukup sederhana tetapi bisa membuat bingung. Kira-kira seperti itulah cara saya mengatasinya, jika anda punya pengalaman ataupun tahu cara yang lebih bagus untuk mengatasinya anda dapat berbagi pada komentar dibawah.
Mas gua nanya dong, gua ada problem nih kalo gua akses controller lain atau method dr codeigniter pake nginx gamao Mas notifnya 404 not found, itu kenapa ya?
ReplyDeleteMisal: http://localhost/index.php/barang <- ini udah gue bikin controller barang paadahal tapi hasilnya malah 404 notfound.
Coba rename nama file controllernya gan jadi huruf besar diawal huruf
Delete