Я пытаюсь установить codeigniter внутри phplist, и в apache все работает хорошо.
Но он получает 404 при загрузке на живой сервер, который использует nginx.
Я знал, что это проблема с mod_rewrite, и пытался погуглить конфигурацию, но не повезло ..
пожалуйста, помогите исправить конфигурацию для nginx, где codeigniter находится внутри phplist
заранее спасибо
Примечание. Services - это имя подкаталога для файлов codeigniter.
вот моя конфигурация
server {
listen 443 ssl http2;
#listen [::]:443 ssl;
include snippets/self-signed.conf;
include snippets/ssl-params.conf;
server_name _;
root /var/www/domain.domain/lists;
index index.php index.html index.htm;
location ~ [^/]\.php(/|$) {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 1200;
proxy_connect_timeout 1200;
proxy_send_timeout 1200;
proxy_read_timeout 1200;
send_timeout 1200;
}
location ~ /.ht {
deny all;
}
location ~ /.well-known {
allow all;
}
location /phpmyadmin {
index index.php;
}
if (!-e $request_filename) {
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last;
rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 last;
}
// ADDING this conf for codeigniter inside phplist but no luck
location /services/ {
alias /var/www/domain.domain/lists/services/;
try_files $uri $uri/ /services/index.php;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_pass backend;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
}
}
server {
listen 80;
#listen [::]:80 ipv6only=on;
server_name _;
return 302 https://$server_name$request_uri;
}
и я получаю эту ошибку
sudo nginx -t
nginx: [emerg] no port in upstream "backend" in /etc/nginx/sites-enabled/your.conf:52
nginx: configuration file /etc/nginx/nginx.conf test failed
КАК РЕШИТЬ!!
Проблема была решена, и что вызвало ошибку, fastcgi_pass был установлен на «backend», тогда как в моем случае должен быть установлен на местоположение «fpm-sock».
вот мой последний конф и codeigniter работает хорошо.
server {
listen 443 ssl http2;
#listen [::]:443 ssl;
include snippets/self-signed.conf;
include snippets/ssl-params.conf;
server_name _;
root /var/www/domain.domain/lists;
index index.php index.html index.htm;
location ~ [^/]\.php(/|$) {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 1200;
proxy_connect_timeout 1200;
proxy_send_timeout 1200;
proxy_read_timeout 1200;
send_timeout 1200;
}
location ~ /.ht {
deny all;
}
location ~ /.well-known {
allow all;
}
location /phpmyadmin {
index index.php;
}
if (!-e $request_filename) {
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
rewrite ^/[_0-9a-zA-Z-]+(/wp-.*) $1 last;
rewrite ^/[_0-9a-zA-Z-]+(/.*\.php)$ $1 last;
}
location /services/ {
alias /var/www/domain.domain/lists/services/;
try_files $uri $uri/ /services/index.php;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
}
}
server {
listen 80;
#listen [::]:80 ipv6only=on;
server_name _;
return 302 https://$server_name$request_uri;
}