ホームページ >バックエンド開発 >PHPチュートリアル >NginxとApacheがポート80を共有する設定方法を詳しく解説
この記事では、主に Nginx と Apache がポート 80 を共有する設定方法を紹介します。もちろん、Nginx が Apache とポート 80 を競合しないようにしたい場合は、この記事の最後に Nginx のポート変更方法も添付します。参照できます
典型的な例 Nginx + Apache アプリケーション ソリューションでは、Nginx がポート 80 を占有し、静的リクエストをフィルターし、Apache ポート 8080 にプロキシを動的にリクエストします。プロキシ リバース プロキシの利点は、アクセスするときは常にポート 80 であり、訪問者は違いに気付かないことです。
しかし、一部のアプリケーションは確かに非常に「賢い」もので、Apache が配置されているポートが 8080 であることを認識し、関連するすべてのハイパーリンクに 8080 を追加します。すでに停止している場合でも、通常どおりアクセスできますか? !
この問題を解決する方法は、Apache をポート 80 で実行することです。同じサーバーに Nginx と Apache、2 つの httpd サービスがあり、どちらも 80 ですが、競合は発生しませんか?
以下は一例です。
Nginx.conf の
server { listen 80; server_name www.webyang.net; }
の設定を変更します。
server { listen 192.168.3.3:80; #指定Nginx只占用某个IP的80端口。 listen 192.168.10.3:80; #如果你服务器中有多个IP,还可以指定多个。 server_name www.webyang.net; }
Nginx に複数の仮想ホストがある場合、それぞれを次のように変更する必要があります。
次はApacheのhttpd.confの出番です
元の
Listen 80
を
Listen 127.0.0.1:80
に変更します。Nginxと同様に、Apacheが占有するIPとポートを指定します。
保存して終了し、Apache を再起動して有効にします。
Apache 上に複数の仮想ホストがある場合。すべてがポート 80 上にある限り、Nginx のように 1 つずつ変更する必要はありません。
例:
NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin hello@abc.com DocumentRoot /data/web_server/admin ServerName www.webyang.net </VirtualHost>
すべてうまくいくと思いますか?いいえ。
そのような Apache には http://127.0.0.1:80 経由でのみアクセスできるため、ポート 80 を占有することは意味がありません。 Apache には 8080、nginx には 80 を使用することをお勧めします。
そのため、現時点でサーバーに複数の IP がある場合、Apache を 127.0.0.1 にバインドするだけでなく、別のネットワーク カードの IP をバインドすることもでき、問題は解決されます。
しかし、ほとんどの人は独立した IP を 1 つしか持っていないため、この方法は多くの人にとって蜃気楼です。
アイデアを変更して、Apache はポート 8080 のままで、1 つの nginx ドメイン名の conf ファイルを変更します
location / { try_files $uri @apache; } location @apache { internal; proxy_pass http://127.0.0.1:8080; } location ~ .*.(php|php5)?$ { proxy_pass http://127.0.0.1:8080; }
現時点では、静的ファイルを含むドメイン名のすべてのアクションは Apache に送られます。
こんな風に書く人も多いです
upstream zend { server 127.0.0.1:8080; } location / { proxy_pass http://zend; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Scheme $scheme; } location ~ .*.(php|php5)?$ { proxy_pass http://zend; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Scheme $scheme; }
大体似たような感じです。
Nginxポートの変更
nginx.confファイルの実装を変更します。このファイルのパスは、Linux では /usr/local/nginx/conf/nginx.conf、Windows ではインストール ディレクトリ confnginx.conf です。
server { listen 80; server_name localhost; …… }
を
server { listen 81; server_name localhost; location / { root html; index index.html index.htm; } …… }
に変更します。 もちろん、8080、8081 などに変更します。81 である必要はありませんが、iptable がポートへのアクセスを許可していることを確認してください。
場所の構成に注意してください:
root html; #根目录,相对于安装目录 index index.html index.htm; #默认主页
デフォルトでは、ファイルはインストールディレクトリの html フォルダーに置かれ、Nginx を通じてアクセスできます。
関連する推奨事項:
以上がNginxとApacheがポート80を共有する設定方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。