質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

プロキシ

プロキシは、二つ以上の相互接続されているプログラム又はデバイスの間に存在する中間サーバを指します。プロキシは、接続者の「代理」としてインターネット接続を行い、接続元にレスポンスを返します。また、その機能を実現するソフトウェアの意味合いもあります。

proxy

proxy(プロキシー)は、企業などの内部コンピュータとインターネットの中間に位置し、例えば直接インターネットに接続できない内部コンピュータの代理としてインターネットに接続する等をするシステム、もしくは代理として機能を実行するソフトウェアです。内部ネットワークへのアクセスを一元管理し、内部からの特定の種類の接続以外を遮断すること、外部からの不正アクセスを拒否することなどに用いられます。

Q&A

解決済

1回答

3239閲覧

Apacheでのプロキシの設定

asatte

総合スコア2

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

プロキシ

プロキシは、二つ以上の相互接続されているプログラム又はデバイスの間に存在する中間サーバを指します。プロキシは、接続者の「代理」としてインターネット接続を行い、接続元にレスポンスを返します。また、その機能を実現するソフトウェアの意味合いもあります。

proxy

proxy(プロキシー)は、企業などの内部コンピュータとインターネットの中間に位置し、例えば直接インターネットに接続できない内部コンピュータの代理としてインターネットに接続する等をするシステム、もしくは代理として機能を実行するソフトウェアです。内部ネットワークへのアクセスを一元管理し、内部からの特定の種類の接続以外を遮断すること、外部からの不正アクセスを拒否することなどに用いられます。

0グッド

1クリップ

投稿2021/06/08 09:41

前提・実現したいこと

Apachでmod_wsgiを使ってpythonを動かしています。
このサーバから外部に出る通信をプロキシ経由としたいです。

調べていてもApacheでプロキシサーバを立てる情報ばかりで、どう設定すれば良いのかよく分かりません…

試したこと

/etc/httpd/conf.d/proxy.conf (ファイル名は適当にそれっぽいのを命名)
を作成して何かしら設定を記述すれば良さそうだなと思っています。

mod_proxyのドキュメントを読んでみましたが、ここに書かれているフォワードプロキシの設定↓はプロキシサーバとして動かす場合の設定ですよね…?

フォワードプロキシ ProxyRequests On ProxyVia On <Proxy *> Order deny,allow Deny from all Allow from internal.example.com </Proxy>

リクエストをプロキシサーバに投げたいのだからリバースプロキシの設定を使えば良いのかな?
でもリクエストを受け付けて転送する訳ではないので…

ProxyPass /foo http://foo.example.com/bar

ここ↑だけあれば良いのかな?
と思ったのですが、受け付けたリクエストをプロキシサーバに転送するようになってしまいました。

受け付けたリクエストはこのサーバで止まってほしいです。
このサーバから投げるときだけプロキシサーバ経由にしたいのです…

初心者過ぎて上手く調べれてない部分も多いので、こういう調べ方すると出てくるよってのも教えていただけると嬉しいです。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

クライアントのブラウザからのリクエストを処理する際に、外部のウェブサーバーに問い合わせを行って、その結果を使って、クライアントにレスポンスを返すという処理で、外部のウェブサーバーに問い合わせを行う際にProxyを通したいと言うことでしょうか?

そうであれば、そのプログラムがApacheから起動されているかどうかはProxyを経由するかどうかに関係ないです。
単に、「Proxy経由でHTTPリクエストを行うプログラム」を書けば良いです。

使うライブラリにも依るでしょうが、例えば、

Python

1os.environ["http_proxy"] = "http://user:pass@proxy-server:port" 2とか、 3os.environ["https_proxy"] = "http://user:pass@proxy-server:port"

各ライブラリでの方法は、「Python 使うHTTPリクエストライブラリ名 proxy」で検索しましょう。

投稿2021/06/08 09:57

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

asatte

2021/06/08 10:00

>クライアントのブラウザからのリクエストを処理する際に、外部のウェブサーバーに問い合わせを行って、その結果を使って、クライアントにレスポンスを返すという処理で、外部のウェブサーバーに問い合わせを行う際にProxyを通したいと言うことでしょうか? その通りです。 なるほど! Apacheでの設定ではなくpython内で設定するものなのですね。 ありがとうございます!
asatte

2021/06/08 10:17

そういえば… 以前GlassfishでJavaを動かしていた時には、 <jvm-options>-Dhttp.proxyHost=192.168.XXX.XXX</jvm-options> <jvm-options>-Dhttp.proxyPort=XXXX</jvm-options> のように設定することでアプリケーションサーバでプロキシの設定ができていたのでApacheでもプロキシの設定ができるものと思っていました。 Apacheでmod_wsgiを使ってアプリケーションサーバとして動かしている場合にはそのような設定はできないという理解で良いでしょうか?
otn

2021/06/08 13:17 編集

「Python起動時に、あらかじめこれこれの環境変数をこのように設定しておく」という設定機能がwsgiにあるなら、そこに http_proxy の設定を書けば出来ると思います。 (環境変数でProxyを指定するライブラリを使っているのであれば)
asatte

2021/06/09 17:39

なるほど…ありがとうございます! まだあまり理解できてないですが、自分でももう少し調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問