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

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

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

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

Apache

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

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Q&A

解決済

2回答

4438閲覧

nginxをリバースプロキシサーバとして使いたい

sekkati

総合スコア24

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

Apache

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

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

0グッド

0クリップ

投稿2018/07/18 01:34

編集2018/07/19 01:12

前提・実現したいこと

前提:
①新人のプログラマです。なぜか客先でインフラ関係を整備しなければいけなくなり、大変困っています。
②apacheで動いている既存のシステムをそのままにして、nginxをリバースプロキシサーバとして使用したいです。
③apacheで動いている既存システムはポート番号によってプログラムが分かれています。
(:8060 :8070 :8080 :8090) そのうちの:8090に対しssl化したnginxをはさむイメージ?
④今今ssl化自体はオレオレ証明書(自己署名)でいいとのこと。
⑤下記URLを参考にssl化していいとのことでmod_sslをyumで導入しました。
(Opensourcetechブログ: 簡単に nginx でhttpsを実施する方法)

# yum list installed | grep mod_ssl mod_ssl.x86_64 1:2.2.15-69.el6.cento

⑥apache側のアプリケーションには特定のネット(ポケットwi-fi)からしかアクセスできないみたいです。

実現したいこと:
①apacheで動くシステムはssl化されておらず、ssl化されたnginxをリバースプロキシとしたいです。
②ssl化したnginxからどのようにapache側のサイト(IP:8090ポート)に移動するようにすればいいのでしょうか?

私自身、簡単な環境構築しかしたことがなく、言葉足らずな部分もあるかと思います。小さなことでもご指摘ください。よろしくお願いします。

該当のソースコード

/etc/nginx/conf.d/default.confは下記のようになっています。

nginx

1### httpでアクセスしてきた場合はhttpsにリダイレクト 2server { 3 listen 80; 4 server_name localhost; 5 return 301 https://$host$request_uri; 6} 7 8### https設定 9server { 10 ## 追加7/13 11 listen 443 ssl; 12 13 server_name localhost; 14 15 ## 追加7/13 16 ssl_certificate /etc/nginx/localhost.crt; 17 ssl_certificate_key /etc/nginx/localhost.key; 18 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 19 ssl_ciphers HIGH:!aNULL:!MD5; 20 21 ## 編集7/18 22 location / { 23 proxy_pass http://192.168.100.110:8090; 24# proxy_redirect off; 25# proxy_set_header Host $host; 26# proxy_set_header X-Real-IP $remote_addr; 27# proxy_set_header X-Forwarded-Host $host; 28# proxy_set_header X-Forwarded-Server $host; 29# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 30 } 31 32 #error_page 404 /404.html; 33 34 # redirect server error pages to the static page /50x.html 35 # 36 error_page 500 502 503 504 /50x.html; 37 location = /50x.html { 38 root /usr/share/nginx/html; 39 } 40}

/etc/httpd/conf/httpd.confは下記のようになっています。(名前等変えています) & (:8090だけ抜粋)

apache

1<VirtualHost *:8090> 2 ServerName localhost 3 DocumentRoot "/opt/abcd/www.defg" 4 ErrorLog "logs/error_abcd.log" 5 CustomLog "logs/com-accsess.log" common 6<Directory "/opt/abcd/www.defg"> 7 Allow Override All 8 Allow from all 9</Directory> 10</VirtualHost>

補足情報(FW/ツールのバージョンなど)

フレームワーク:MVVMフレームワーク(フレームワークもどきと呼ばれてました)

$ cat /etc/redhat-release CentOS release 6.10 (Final) $ nginx -v nginx version: nginx/1.14.0 $ httpd -v Server version: Apache/2.2.15 (Unix) Server built: Jun 19 2018 15:45:13 $ php -v PHP 5.6.13 (cli) (built: Sep 3 2015 14:19:17) Copyright (c) 1997-2015 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies $ php-fpm -v PHP 5.6.36 (fpm-fcgi) (built: Apr 25 2018 10:12:10) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

※上記のphpとphp-fpmの具体的な違いもわかっていないです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

location / {...}の部分でproxy_passを設定すればnginxがリバースプロキシとして動作するようになります。https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/

投稿2018/07/18 03:45

YouheiSakurai

総合スコア6142

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

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

sekkati

2018/07/18 04:13 編集

YouheiSakurai様 ご回答ありがとうございます。今今default.confを修正してサイトにアクセスすると An error occurred.Sorry, the page you are looking for is currently unavailable. Please try again later.If you are the system administrator of this resource then you should check the error log for details.Faithfully yours, nginx. という画面が表示されてしまいます。/var/log/nginx/error.logを確認すると 2018/07/18 13:00:37 [error] 22635#22635: *12 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.100.101, server: localhost, request: "GET / HTTP/1.1", upstream: "http://192.168.100.110:8090/", host: "192.168.100.110" と同じような文言が複数行にわたって書かれていました。。
sekkati

2018/07/18 04:46

YouheiSakurai様 ご回答ありがとうございます。 2018/07/18 13:00:37 [error] 22635#22635: *12 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.100.101, server: localhost, request: "GET / HTTP/1.1", upstream: "http://192.168.100.110:8090/", host: "192.168.100.110" 2018/07/18 13:00:37 [error] 22635#22635: *12 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.100.101, server: localhost, request: "GET /favicon.ico HTTP/1.1", upstream: "http://192.168.100.110:8090/favicon.ico", host: "192.168.100.110", referrer: "https://192.168.100.110/" この二つのセット(*12の部分の数字違い)がエラーログに並んでいるように見えます。。 ファビコン周りでしょうか?自分でググったところphp-fpm関係っぽいですが、その部分の設定も必要なのでしょうか?解らなくて若干混乱しています。。
YouheiSakurai

2018/07/18 04:56

favicon.icoはブラウザが勝手にリクエストしているだけなので無視でOKです。 client: 192.168.100.101 -(GET /)-> server: 192.168.100.110:443 -(プロキシ)-> upstream: "http://192.168.100.110:8090/" という状況だと思うのでupstreamがなぜrefuseするのかupstreamのログを見ると良いと思います。nginx自体はちゃんと設定できていそうだと感じます。
sekkati

2018/07/18 05:35 編集

YouheiSakurai様 ご回答ありがとうございます。(何度も申し訳ないです!!) ご指摘いただいたupstreamのログの場所がわからないです。そもそもupstreamの意味がわからないのでググったのですがロードバランサに使う設定でしょうか? 先ほど追記させていただいたのですが、 ⑥apache側のアプリケーションには特定のネット(ポケットwi-fi)からしかアクセスできないみたいです。 ↑が原因じゃないかとhttpd.conf周りを調べています。
sekkati

2018/07/18 05:53 編集

そもそも、同サーバにあるApacheを停止していました。 # service httpd start httpd を起動中: Warning: DocumentRoot [/opt/aiueo/www] does not exist (98)Address already in use: make_sock: could not bind to address [::]:80 (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down Unable to open logs [失敗] 今今Apache側のポート番号80とnginxの80が被っているように思えてきました。
sekkati

2018/07/18 05:54 編集

【httpd.conf】 # Listen 80 Listen 8080 Listen 8090 Listen 8070 Listen 8050 Listen 8060 とし、保存すると今度は # service httpd start httpd を起動中: Warning: DocumentRoot [/opt/aiueo/www] does not exist (98)Address already in use: make_sock: could not bind to address [::]:443 (98)Address already in use: make_sock: could not bind to address 0.0.0.0:443 no listening sockets available, shutting down Unable to open logs [失敗] となりました。443は開いていないような・・・ nanoエディタないで443の文言を探しましたが見つかりませんでした。
sekkati

2018/07/18 06:07 編集

少しそれてしまいました。 Apache側のエラーログということでしょうか、/var/log/httpd/ 直下に複数エラーログがあるので、質問事項のhttpd.confでいうlogs/error_abcd.logがエラーログということになるのでしょうか。中身を確認したところ何も書かれていませんでした。
YouheiSakurai

2018/07/18 07:05

「Apache側のエラーログということでしょうか」->YESです。nginxのupstreamは、今回の構成ではApacheです。
sekkati

2018/07/18 07:11 編集

YouheiSakurai 様 ありがとうございました! チームのエンジニアに助けていただき解決することができました!!!apacheが起動していないこと、443ポートに関してはssl.confが読み込まれていました。用件的にはリダイレクト云々ではなく、nginxの443だけ開けば良かったそうなので、そのようにdefault.conf側も修正しました。
YouheiSakurai

2018/07/18 07:22

解決できてよかったですね。
guest

0

同じチームのエンジニアの方に助けていただきました。

①nginx側は443ポートだけ開いて80番ポートは閉じました。

【default.conf】

nginx

1### httpでアクセスしてきた場合はhttpsにリダイレクト 2#server { 3# listen 80; 4# server_name localhost; 5# return 301 https://$host$request_uri; 6#}

②apacheが起動していないこと→起動すると下記エラーが出る

(98)Address already in use: make_sock: could not bind to address [::]:443
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:443

/etc/httpd/conf.d直下の*.confなるものがすべて読み込まれていました。
こちらのssl.confの443ポートを閉じました。

【httpd.conf】

apache

1# 2# Load config files from the config directory "/etc/httpd/conf.d". 3# 4Include conf.d/*.conf 5

こちらの443ポートを閉じました。

投稿2018/07/18 07:08

sekkati

総合スコア24

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問