ホームページ バックエンド開発 PHPチュートリアル NginxとApacheがポート80を共有する設定方法を詳しく解説

NginxとApacheがポート80を共有する設定方法を詳しく解説

May 05, 2018 am 09:57 AM
apache nginx ポート

この記事では、主に 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 の比較

以上がNginxとApacheがポート80を共有する設定方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

H5プロジェクトの実行方法 H5プロジェクトの実行方法 Apr 06, 2025 pm 12:21 PM

H5プロジェクトを実行するには、次の手順が必要です。Webサーバー、node.js、開発ツールなどの必要なツールのインストール。開発環境の構築、プロジェクトフォルダーの作成、プロジェクトの初期化、コードの書き込み。開発サーバーを起動し、コマンドラインを使用してコマンドを実行します。ブラウザでプロジェクトをプレビューし、開発サーバーURLを入力します。プロジェクトの公開、コードの最適化、プロジェクトの展開、Webサーバーの構成のセットアップ。

Giteeページ静的なWebサイトの展開に失敗しました:単一のファイル404エラーをトラブルシューティングと解決する方法 Giteeページ静的なWebサイトの展開に失敗しました:単一のファイル404エラーをトラブルシューティングと解決する方法 Apr 04, 2025 pm 11:54 PM

GiteEpages静的Webサイトの展開が失敗しました:404エラーのトラブルシューティングと解像度Giteeを使用する

Enterprise WechatでのJSリソースキャッシュの問題を解決する方法は? Enterprise WechatでのJSリソースキャッシュの問題を解決する方法は? Apr 04, 2025 pm 05:06 PM

Enterprise WechatのJSリソースキャッシュ問題に関する議論。プロジェクト機能をアップグレードするとき、一部のユーザーは、特にエンタープライズでうまくアップグレードできない状況に遭遇することがよくあります...

サーバー側でキャラクターエンコードを設定する方法ブートストラップテーブルを解決する方法 サーバー側でキャラクターエンコードを設定する方法ブートストラップテーブルを解決する方法 Apr 07, 2025 pm 12:00 PM

サーバー側に文字エンコードを設定して、文字化けしたブートストラップテーブルを解決するには、次の手順に従う必要があります。サーバー文字のエンコーディングを確認します。サーバー構成ファイルを編集します。 EncodingをUTF-8に設定します。サーバーを保存して再起動します。エンコーディングを確認します。

ブートストラップページをプレビューする方法 ブートストラップページをプレビューする方法 Apr 07, 2025 am 10:06 AM

Bootstrapページのプレビュー方法は次のとおりです。BrowserでHTMLファイルを直接開きます。ライブサーバープラグインを使用してブラウザを自動的に更新します。ローカルサーバーを構築して、オンライン環境をシミュレートします。

xamppでmysqlを起動できません xamppでmysqlを起動できません Apr 08, 2025 pm 03:15 PM

ポート競合、構成ファイルエラー、システム許可の不十分、サービス依存関係の問題、インストールの問題など、XAMPPがMySQLを起動できない理由はたくさんあります。トラブルシューティング手順は次のとおりです。1)ポートの競合を確認します。 2)構成ファイルを確認します。 3)システムの許可を確認します。 4)サービスの依存関係を確認します。 5)mysqlを再インストールします。これらの手順に従うと、MySQLの起動が失敗する問題を見つけて解決できます。

Hash値でindex.htmlファイルを指すようにnginxを構成する方法は? Hash値でindex.htmlファイルを指すようにnginxを構成する方法は? Apr 05, 2025 am 09:36 AM

Hash値でindex.htmlファイルを指すようにnginxを構成する方法は? Reactプロジェクトを使用してパッケージ化するときの生成されたindex.html ...

Nginxに展開された後、ページを更新するときにnext.js静的エクスポートが失敗するのはなぜですか? Nginxに展開された後、ページを更新するときにnext.js静的エクスポートが失敗するのはなぜですか? Apr 04, 2025 pm 03:48 PM

next.js nginxの静的エクスポートルーティングの問題はnext.jsを使用しています...

See all articles