php - Nginx Directory index of "/var/www/html/" is forbidden
one text
I have a PHP application but I cannot get Nginx to work with it. I have checked permissions and my nginx configuration but I am unable to find the issue.
/etc/nginx/nginx.conf
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /var/www/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
# Settings for a TLS enabled server.
#
# server {
# listen 443 ssl http2 default_server;
# listen [::]:443 ssl http2 default_server;
# server_name _;
# root /usr/share/nginx/html;
#
# ssl_certificate "/etc/pki/nginx/server.crt";
# ssl_certificate_key "/etc/pki/nginx/private/server.key";
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 10m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# location / {
# }
#
# error_page 404 /404.html;
# location = /404.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }
/etc/nginx/conf.d/site.com.conf
server {
listen 80;
server_name site.com;
root /var/www/html/;
index index.php index.html;
#i# Logging
access_log /var/log/nginx/site.com_access_log;
error_log /var/log/nginx/site.com_error_log;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location ~ ^/(README.md|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ {
deny all;
}
location ~ ^/(config|temp|logs)/ {
deny all;
}
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
My permissions
/var/www/html
dr-xr-xr-x root root /
drwxr-xr-x nginx nginx var
drwxr-xr-x nginx nginx www
drwxr-xr-x nginx nginx HTML
Now, when I visit my website I get the index.php file downloading. I know this is an issue with PHP. On an Apache, server i'd check the handler, owner and permissions but with nginx I'm not sure what to do. My permissions look ok
stat /var/www/html/index.php
File: '/var/www/html/index.php'
Size: 12843 Blocks: 32 IO Block: 4096 regular file
Device: f650b601h/4132484609d Inode: 138577 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 997/ nginx) Gid: ( 993/ nginx)
When I visit the installer directory for my application which is located at /var/www/html/installer it gives the 403 error
My error log
2021/02/11 22:12:56 [error] 23013#0: *43 directory index of "/var/www/html/installer/" is forbidden, client: xx.254.113.xx, server: _, request: "GET /installer/ HTTP/1.1", host: "www.xxx.com"
php -v
PHP 7.4.15 (cli) (built: Feb 2 2021 14:19:57) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
Can anyone point out my issue? I do think it's PHP because I have tried multiple different configurations for my nginx files.
Source