私は新しい機能を必要とする古いプロジェクトを持っていて、それを提供するためにlaravelを使用します。Apacheでxamppで正常に機能しているすべてのものですが、私のサーバーcon nginxはアクセス拒否メッセージと私のルートにアクセスできません。laravelがmysite.com/2015にインストールされている場合、サイト構成は次のようになります。変更するshowldは何ですか?
location /newsection/ {
try_files $uri $uri/ /newsection/public/index.php$request_uri;
}
しかし、それは500エラーを引き起こします
server {
listen 80;
server_name am2.aminversiones.com;
root /home/forge/am2.aminversiones.com;
# FORGE SSL (DO NOT REMOVE!)
# ssl_certificate;
# ssl_certificate_key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
index index.html index.htm index.php;
charset utf-8;
client_max_body_size 300M;
location / {
#try_files $uri $uri/ /index.php?$query_string;
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/am2.aminversiones.com-error.log error;
error_page 404 /index.php;
location ~ \.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;
}
# Remove trailing slash to please routing system.
if (!-d $request_filename) {
rewrite ^/(.+)/$ /$1 permanent;
}
# version 1
location ^~ /2015 {
alias /home/forge/am2.aminversiones.com/2015/public;
try_files $uri $uri/ @2015;
location ~* \.php {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(.*)$;
include /etc/nginx/fastcgi_params;
}
}
location @2015 {
rewrite ^/2015/(.*)$ /2015/index.php/$1 last; # THIS IS THE IMPORTANT LINE
}
# end version 1
# version 2
# this is with `ln -s /home/tom/public_html/demos/demo1/public <document root>/demo1`
location ~ /2015 {
try_files /2015/$uri /2015/$uri/ /2015/index.php?q=$uri&$args;
}
# end version 2
# PHP FPM configuration.
location ~* \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
include /etc/nginx/fastcgi_params;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# We don't need .ht files with nginx.
location ~ /\.ht {
deny all;
}
}
まあ、私は非常に簡単な設定の解決策を見つけて、nginxサーバーのサブディレクトリの/ etc/nginx/sites-available/yourSite設定ファイルにLaravelをインストールし、これを追加します。
location ^~ /laravel {
alias /var/www/laravel/public;
try_files $uri $uri/ @laravel;
location ~ \.php {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(.*)$;
include /etc/nginx/fastcgi_params;
}
}
location @laravel {
rewrite /laravel/(.*)$ /laravel/index.php?/$1 last;
}
そして出来上がり、あなたのルートは彼らがどうあるべきか通常通り機能します。
この問題に数時間費やした後、ようやくサブドメインアドレスでサイトを修正できました。
laravel
プロジェクトをngnix-ubuntu 16-php.7.2
を使用してサーバー上のsubfolder
に配置する場合は、ngnix configを更新します。
1)ネストされた(サブフォルダー)がメインフォルダー内にありません
/var/www/main:
/var/www/nested:
次にあなたの設定:
location /nested {
alias /var/www/nested/public;
try_files $uri $uri/ @nested;
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
}
location @nested {
rewrite /nested/(.*)$ /nested/index.php?/$1 last;
}
2)メインフォルダー内のlaravel-testフォルダー(サブフォルダー):
/var/www/main:
/var/www/main/nested:
次にあなたの設定:
location /laravel-test {
alias /var/www/main/laravel-test/public;
try_files $uri $uri/ @laravelTest;
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
}
}
location @laravelTest {
rewrite /laravel-test/(.*)$ /laravel-test/index.php?/$1 last;
}
うまくいかなかったので、別の解決策を見つけました。
私は「通常の」laravelドメインを作成しました http://generic.laravel root/my/laravel/path/publicをポイントしました
その後、実際のドメイン上にロケーションを作成して、私の一般的なLaravelにプロキシします。
location /laravel {
rewrite /laravel/?(.*)$ /$1 break;
proxy_pass http://generic.laravel;
}
残念ながら、Laravelはリンクを作成するためにURL http://generic.laravel を使用します。この手順に従って解決することができます Laravel:ベースURLを変更しますか?
場所/ stationery {エイリアス/ var/www/html/stationery/public; try_files $ uri $ uri/@stationery;場所〜.php $ {include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $ request_filename; }}
location @stationery {rewrite /stationery/(.*)$ /stationery/index.php?/ last; }
何らかの理由で、エイリアスが原因で問題が発生し、機能しませんでした。多分これは他の人を助けるでしょう、それで私はこの仕事をするために私がやったことです。ご覧のとおり、「エイリアス」を削除し、方程式にlaravel/publicを追加しました。
location ^~ /laravel/public {
index home.php home.html home.htm index.html index.htm index.php;
try_files $uri $uri/ @laravel;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
charset utf-8;
location ~ \.php {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
include fastcgi_params;
}
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
location @laravel {
rewrite /laravel/public/(.*)$ /laravel/public/index.php?/$1 last;
}