私は現在、URLパスを使用するJSプロジェクトに取り組んでいます。今、私が自分のWebサイトにexample.com /でアクセスすると、JavaScriptは機能しません。 example.com/index.html。
私はすでにリバースプロキシを使用して、2つの異なるDockerコンテナへのパスをプロキシしています。だから私の考えはexample.com/index.html when example.com/が呼び出されます。しかし、私はこの目標を達成するための正規表現を理解することはできません。
私の古い設定:
server {
listen 80;
server_name example.com;
# allow large uploads of files - refer to nginx documentation
client_max_body_size 1G;
# optimize downloading files larger than 1G - refer to nginx doc
before adjusting
#proxy_max_temp_file_size 2G;
location / {
proxy_pass http://structure.example:80;
}
location /cdn {
proxy_pass http://content.example:80;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
私が試したもの:
server {
listen 80;
server_name example.com;
# allow large uploads of files - refer to nginx documentation
client_max_body_size 1G;
# optimize downloading files larger than 1G - refer to nginx doc
before adjusting
#proxy_max_temp_file_size 2G;
location / {
proxy_pass http://structure.nocms:80/index.html;
}
location ~* \S+ {
proxy_pass http://structure.nocms:80;
}
location /cdn {
proxy_pass http://content.nocms:80;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
以下の設定はあなたのために働くはずです
server {
listen 80;
server_name example.com;
# allow large uploads of files - refer to nginx documentation
client_max_body_size 1G;
# optimize downloading files larger than 1G - refer to nginx doc
before adjusting
#proxy_max_temp_file_size 2G;
location = / {
rewrite ^ /index.html permanent;
}
location / {
proxy_pass http://structure.example:80;
}
location /cdn {
proxy_pass http://content.example:80;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
受け入れられた回答には1つの欠点があります。example.comに移動すると明示的にexample.com/index.htmlにリダイレクトされます(つまり、301 Moved permanently
が返されます)。常に望ましいとは限りません。
代わりに、location /
の前に別のディレクティブlocation = /
を付けることをお勧めします。これは、ルートURLのみに設計されています。
location = / {
proxy_pass http://structure.nocms:80/index.html;
}
location / {
proxy_pass http://structure.nocms:80;
}
上記はnginxにリクエストをexample.comに直接http://structure.nocms:80/index.html
に渡すように指示しますが、example.com/*の他のURLをリクエストするとリクエストはダウンストリームの対応するURL。