Nginx пересылает запросы, загружает страницуPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Nginx пересылает запросы, загружает страницу

Сообщение Anonymous »

Проблема:
У меня сервер от hetzner (облако Linux). Я установил CloudPanel, чтобы упростить управление веб-сайтами. У меня есть веб-сайт, который находится в поддомене api.website.com, где я предоставляю несколько API.
Дело в том, что у меня есть несколько проектов, каждый из которых находится в подпапке, например:
  • api.website.com/project1/
  • api.website.com/project2/
  • api. веб-сайт.com/project3/
Каждая папка проектов имеет собственный файл композитора.json и представляет собой отдельный проект.
У меня есть попытался изменить файл vHost для пересылки запроса каждой папки на соответствующий index.php.
Вот мой код vHosts:
server {
listen 80;
listen [::]:80;
listen 443 quic;
listen 443 ssl;
listen [::]:443 quic;
listen [::]:443 ssl;
http2 on;
http3 off;
{{ssl_certificate_key}}
{{ssl_certificate}}
server_name api.website.com;
{{root}}

{{nginx_access_log}}
{{nginx_error_log}}

if ($scheme != "https") {
rewrite ^ https://$host$request_uri permanent;
}

location ~ /.well-known {
auth_basic off;
allow all;
}

{{settings}}

location /project1/ {
try_files $uri $uri/ /project1/index.php?$args;
}

location / {
{{varnish_proxy_pass}}
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_hide_header X-Varnish;
proxy_redirect off;
proxy_max_temp_file_size 0;
proxy_connect_timeout 720;
proxy_send_timeout 720;
proxy_read_timeout 720;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
}

location ~* ^.+\.(css|js|jpg|jpeg|gif|png|ico|gz|svg|svgz|ttf|otf|woff|woff2|eot|mp4|ogg|ogv|webm|webp|zip|swf|map|mjs)$ {
add_header Access-Control-Allow-Origin "*";
add_header alt-svc 'h3=":443"; ma=86400';
expires max;
access_log off;
}

location ~ /\.(ht|svn|git) {
deny all;
}

if (-f $request_filename) {
break;
}
}

server {
listen 8080;
listen [::]:8080;
server_name api.website.com;
{{root}}

include /etc/nginx/global_settings;

try_files $uri $uri/ /index.php?$args;
index index.php index.html;

location ~ \.php$ {
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
try_files $uri =404;
fastcgi_read_timeout 3600;
fastcgi_send_timeout 3600;
fastcgi_param HTTPS "on";
fastcgi_param SERVER_PORT 443;
fastcgi_pass 127.0.0.1:{{php_fpm_port}};
fastcgi_param PHP_VALUE "{{php_settings}}";
}

if (-f $request_filename) {
break;
}
}

Итак, с помощью этой строки я пытаюсь перенаправить каждый запрос, проходящий через /project1/, в его /project1/index.php. В результате он загружает файл, посетив любой API.
Пример API: https://api.website.com/project1/todos/all
Я использую этот репозиторий. /package для управления маршрутизацией: https://github.com/steampixel/simplePHPRouter
Следует также отметить, что в Apache это было действительно легко сделать через .htaccess. Все, что мне нужно было сделать, это просто добавить файл в соответствующую папку. Вот пример файла:
DirectoryIndex index.php

# enable apache rewrite engine
RewriteEngine on

# set your rewrite base
# Edit this in your init method too if you script lives in a subfolder
RewriteBase /project1/

# Deliver the folder or file directly if it exists on the server
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Push every request to index.php
RewriteRule ^(.*)$ index.php [QSA]


Подробнее здесь: https://stackoverflow.com/questions/790 ... s-the-page
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»