このため、example.com:8080アドレスを含むページ全体がYandexインデックスに登録されました。これは、問題が3年間存在していたためです。
この問題は、サーバーがISPマネージャーを使用して自動的に構成されたため、サイトがexample.comとexample.com:8080の両方でアクセス可能であり、5 ipがサーバーに接続されていることを考慮して悪化した-アドレスと約20のサイトがオンになっているため、Apacheとnginxを正しい方法で構成するためにすべてを手動で再構成することはできませんでした(Apacheを127.0.0.1でのみリッスンし、同じポートとnginxでのみハングさせる) 。 ISPマネージャーを使用するすべてのサイトは潜在的に問題の影響を受ける可能性があるため 、非常に関連性が高いと考え、必要に応じて全員がチェックおよび修正できるようにソリューションを公開することにしました。
したがって、タスクは「少し血」をすることでした:
1. example.comが正常に機能するが、example.com:8080で開かないようにするため
2.特定のサイトのポート8080から、Yandexの発行に該当するページの機能を維持するためにポート80にリダイレクトされるようにします。
答えに直行し、背景なし
クイックグーグルは良いものを何も表示しませんでした、ほとんどの方法はここで提案された iptablesを使用した方法に似ていました :
iptables -A INPUT -p tcp -m tcp --dport 8080 -j REDIRECT --to-ports 80
問題は、この方法が機能しないことです-dmesgは
ip_tables REDIRECT target: only valid in nat table, not filter.
少しグーグルで調べた後、nginx-ruメーリングリストでオプションを見つけました。
www.lexa.ru/nginx-ru/msg21134.html
オプションはこれでした-apache.confのサイトを私のIP 11.22.33.44:8080から127.0.0.1:8080に転送し、nginx.confでそれぞれ私のサイトの11.22.33.44:8080の代わりにproxy_pass 127.0.0.1:8080を登録し、新しいサーバーをnginx configに追加します
server { listen 11.22.33.44:8080; rewrite ^/(.*)$ http://$host:80/$1 redirect; }
原則として、このオプションは真実に似ていましたが、1つの問題がありました。Apacheはポート11.22.33.44:8080を永続的にリッスンし、それに応じてnginxがリッスンを開始できませんでした。
それから私は夜明けしました-あなたはそれを取得して同じリダイレクトを実装できますが、nginxではなくapacheを使用します。
対応するVirtualHostを取得してapache2.confに追加するだけです。
<VirtualHost 11.22.33.44:8080> ServerName example.com Redirect 301 / http://example.com/ </VirtualHost>
私はそれを試しました-そして出来上がり、それはすべてうまくいきました!
問題解決
したがって、debian、nginx、apacheがあり、すべてがip 11.22.33.44のexample.comのisp-managerによって設定されている場合、「 ポート8080から80にリダイレクトする方法 」 という問題の解決策は、4つの簡単な手順で構成されます:
1. Apache構成(/etc/apache2/apache2.conf)で、すべての出現箇所を変更します
Virtual Host 11.22.33.44:8080
に
VirtualHost 127.0.0.1:8080
2. Apache構成(/etc/apache2/apache2.conf)へのリダイレクトを含む新しいVirtualHostを追加します。
<VirtualHost 11.22.33.44:8080> ServerName example.com Redirect 301 / http://example.com/ </VirtualHost>
3. nginx config(/etc/nginx/nginx.conf)で、すべての出現を変更します
proxy_pass http://11.22.33.44:8080
に
proxy_pass http://127.0.0.1:8080
4. Apacheを再起動し、nginxを再起動します
/etc/init.d/apache2 restart /etc/init.d/nginx restart