私はNginxの初心者です(PHP 7.2を使用しています)。別々のフォルダーを使用して複数のサイトにアクセスする方法がわかりません。
したがって、デフォルトのフォルダとして/home/user/php;
を設定します。
そこには、site1, site2, site3 etc
という名前のフォルダーがいくつかあります。
ターミナルを使用して、コマンドphp -S localhost:8000
を使用して、デフォルトフォルダーでサーバーを起動します。
これは問題です。ブラウザでlocalhost:8000/site1/
と入力すると、index.phpファイルの内容が表示されますが、その場所にある他のファイルが乱れます。例えば写真。 /php/site1/images/
にあるpngファイルのフォルダーがあります。しかし、ターミナルログによると、/php/images/
(存在しない)と/php/site1/images/
ではなくこれらのpngファイルを検索しているため、ブラウザのページには表示されません。すべては、サイトのあるサブフォルダーではなく、デフォルトのサーバーフォルダーで検索されます。構成ファイルを変更するにはどうすればよいですか、別のフォルダーを読み取るにはどうすればよいですか?
Nginxの設定(/etc/nginx/sites/available/default
)は次のとおりです。 https://Pastebin.com/pZHgPkCZ
手順は次のとおりです(前提条件:-Nginxがインストールされている):
/var/www/
folderで両方またはすべてのサイトのサーバーブロックを作成します。
Sudo mkdir -p /var/www/mytest1.com/public_html
Sudo mkdir -p /var/www/mytest2.com/public_html
許可を変更して、通常のユーザーに読み取りおよび書き込みアクセスを許可します。
Sudo chown -R $(whoami):$(whoami) /var/www/mytest1.com/public_html
Sudo chown -R $(whoami):$(whoami) /var/www/mytest2.com/public_html
ページを正しく提供できるように権限を設定します。
Sudo chmod -R 755 /var/www
テストサイト用に2つのページを作成します。
Sudo echo "Welcome to mytest1.com!" > /var/www/mytest1.com/public_html/index.html
Sudo echo "Welcome to mytest2.com!" > /var/www/mytest2.com/public_html/index.html
サーバーブロックの作成:
デフォルトのnginxホームページのデフォルトファイルをコピーします:
Sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/mytest1.com
コピーしたファイルを編集します。
Sudo nano /etc/nginx/sites-available/mytest1.com
root /var/www/html;
をroot /var/www/mytest1.com/public_html;
に変更しますserver_name _;
からserver_name mytest1.com www.mytest1.com;
に変更しますindex index.html index.htm index.nginx-debian.html;
をこのindex index.php index.html index.htm index.nginx-debian.html;
に変更しますfastcgi_pass socket
パスの値が正しいことを確認します。
実行:ls /var/run/php/
結果:
php7.2-fpm.pid php7.2-fpm.sock
メモが正しい方向を指している場合は、サーバーブロックファイルにphp7.2-fpm.socket
の場所を追加し、ファイルの場所の部分がそのように見えることを確認し、一部の領域でこれを実現するには#
を削除します。
...
location ~ \.php$ {
include snippets/fastcgi-php.conf;
#
# # With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
# # With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}
...
エディターを閉じ、Sudo nginx -t
を使用してnginx設定をテストします。エラーがあれば、手順を逆方向に繰り返します。有効な構文は次のとおりです。
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
サイト1でstep 5 and 6
を使用していたmytest2.com
を使用して、他のサイトでmytest1.com
を繰り返します。さらに、2番目のサイトでは、/etc/nginx/sites-available/mytest2.com
ファイルの編集時に以下を実行します。
listen 80 default_server;
listen [::]:80 default_server;
これに:
listen 80;
listen [::]:80;
Default_server指定を持つことができるサーバーブロックは1つだけです。これは、要求されたserver_nameが使用可能なサーバーブロックのいずれとも一致しない場合にどのブロックに戻るかをNginxに伝えます。
シンボリックリンクを作成します。
Sudo ln -s /etc/nginx/sites-available/mytest1.com /etc/nginx/sites-enabled/
Sudo ln -s /etc/nginx/sites-available/mytest2.com /etc/nginx/sites-enabled/
デフォルトのサーバーブロックのシンボリックリンクを削除します。
Sudo rm /etc/nginx/sites-enabled/default
Nginxを再起動します。
Sudo service nginx restart
11:オプション:ホストファイルの編集:
127.0.0.1 mytest1.com
127.0.0.1 mytest2.com
ブラウザに移動してlocalhost
と入力するか、mysite1.com
ファイルにエントリを作成した場合は/etc/hosts
と入力します。また、nginxは80
ではなく、ポート8080
でリッスンすることに注意してください。 PHPサーバーではありません。
資源:
https://devanswers.co/installing-nginx-ubuntu-18-04-multiple-domains/