大規模な検索を行ったところ、nginx proxy_pass の質問に関する投稿がかなりあります。私は自分の問題をこれらの質問のいくつかに変更しようとしましたが、進歩はありませんでした。
PHPベースのWebサイトをRailsに書き直しています。元のサイト自体は、フォーム付きのシンプルな 2 ページです。Apache の mod_rewrite / mod_proxy ソリューションを使用して、フォームの投稿後にサイトが続く場所の URL をマスクします。
簡単にするために、php サイトには 3 つのディレクトリがあり、3 つの .htaccess ファイルしか含まれていません。ディレクトリを a、b、c と呼びましょう。次の各 .htaccess ファイル
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)$ http://www.domainbeingpostedto.com/actual_letter_directory/$1 [P,L]
</IfModule>
私はApacheの専門家ではありませんが、[P、L]はproxy_passと同じで、nginxの最後であると確信していますか?
代わりにパッセンジャーとnginxを使用してrails cmsに変換されたphpサイトのこのソリューションを書き直そうとしています。
Railsアプリはページが見つからない404を返すだけなので、これまでの解決策は機能していません。そのため、proxy_passが投稿リクエストを他のサーバーに転送していないことがわかります。nginx.conf ファイルには次のものがあります。
server {
listen 80;
server_name newtestappdomain.com;
location /a/ {
proxy_pass http://www.domaintoacceptdatapostandbemasked.com/;
#rewrite ^/a/(.*)$ http://www.domaintoacceptdatapostandbemaskedcom/a/ last;
}
location /b/ {
proxy_pass http://www.domaintoacceptdatapostandbemasked.com/;
#rewrite ^/b/(.*)$ http://www.domaintoacceptdatapostandbemasked.com/b/ last;
}
location /c/ {
proxy_pass http://www.domaintoacceptdatapostandbemasked.com/;
#rewrite ^/c/(.*)$ http://www.domaintoacceptdatapostandbemasked.com/c/ last;
}
root /home/deploy/testapp/public; # <--- be sure to point to 'public'!
passenger_enabled on;
}
書き換えルールのコメントを外すと、マスクしようとしている他のサイトにバウンスするだけです。検証のためにヘッダートレースも行いました。他のドメインへの投稿は見られませんでした。私は本当にnginxが初めてで、何をすべきかわからないので、ちょっと困惑しています。Apache は rails と mod_rewrite / mod_proxy でうまく動作しません。どんな洞察も素晴らしいでしょう。