質問編集履歴

4

進捗の追記

2016/02/15 09:04

投稿

CyberMergina
CyberMergina

スコア295

test CHANGED
File without changes
test CHANGED
@@ -259,3 +259,85 @@
259
259
 
260
260
 
261
261
  その方面で検索すると[こちらの記事](http://blog.serverworks.co.jp/tech/2013/08/01/elb-proxy-protocol/)を発見しましたので、調べてみます。
262
+
263
+
264
+
265
+
266
+
267
+ **>ProxyProtocolを有効にし、BadRequestは解決。ただ、他のVHと共存できない(追記:2016/02/15 18:04)**
268
+
269
+
270
+
271
+ - TCPで通信するVirtualHostのみにした際、BadRequestは解決し、ログファイルにも「"PROXY ..."」ではなく「"GET ..."」という形でログが残るようになっていました
272
+
273
+
274
+
275
+ ただ、他にHTTPで通信しているVirtualHost(Server Nameで分けている)が接続できなくなった。
276
+
277
+
278
+
279
+ 構造は以下の通りになっています。
280
+
281
+
282
+
283
+ ```
284
+
285
+ [ELB1]
286
+
287
+ server_name hoge.jp
288
+
289
+ HTTPS(443) -> HTTP(80)
290
+
291
+ HTTP(80) -> HTTP(80)
292
+
293
+ [nginx]
294
+
295
+ root(/var/www/html)
296
+
297
+
298
+
299
+ [ELB2]
300
+
301
+ server_name node.hoge.jp
302
+
303
+ SSL(443) -> TCP(80)
304
+
305
+ TCP(80) -> TCP(80)
306
+
307
+ [nginx(Reverce Proxy)]
308
+
309
+ / -> 3000port(Nodeサーバー)
310
+
311
+ /socket.io/ -> 4000port(WSサーバー)
312
+
313
+
314
+
315
+ [ELB3]
316
+
317
+ server_name main.hoge.jp
318
+
319
+ HTTPS(443) -> HTTP(80)
320
+
321
+ HTTP(80) -> HTTP(80)
322
+
323
+ [nginx]
324
+
325
+ root(/var/www/main)
326
+
327
+ ```
328
+
329
+
330
+
331
+ ※インスタンスは1つ
332
+
333
+ ※現在、最小構成にしているのでProxyサーバー、Appサーバーなど分けていません。
334
+
335
+
336
+
337
+ proxy protocolを有効にすると**ELB1**と**ELB3**が接続できなくなります。
338
+
339
+ (ELBのヘルスチェックで引っかかる)
340
+
341
+
342
+
343
+ TCPとHTTPの共存は厳しいのでしょうか・・・?

3

進捗を追記しました。設定ファイルの内容を現時点のものに書き換えました。

2016/02/15 09:04

投稿

CyberMergina
CyberMergina

スコア295

test CHANGED
File without changes
test CHANGED
@@ -106,9 +106,9 @@
106
106
 
107
107
 
108
108
 
109
- set_real_ip_from 10.0.0.0/8;
109
+ # set_real_ip_from 10.0.0.0/8;
110
-
110
+
111
- real_ip_header X-Forwarded-For;
111
+ # real_ip_header X-Forwarded-For;
112
112
 
113
113
 
114
114
 
@@ -124,53 +124,63 @@
124
124
 
125
125
  server {
126
126
 
127
- listen 80;
128
-
129
- server_name hoge.hoge.jp;
130
-
131
- proxy_request_buffering off;
132
-
133
-
134
-
135
- location /demo/ {
136
-
137
- proxy_pass http://demo.localhost/;
138
-
139
- }
140
-
141
-
142
-
143
- location / {
144
-
145
- proxy_pass http://0.0.0.0:1000;
146
-
147
- }
148
-
149
-
150
-
151
- location /socket.io/ {
152
-
153
- proxy_pass http://0.0.0.0:2000;
154
-
155
- proxy_set_header X-Real-IP $remote_addr;
156
-
157
- proxy_read_timeout 150;
158
-
159
- proxy_set_header Host $host:$server_port;
160
-
161
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
162
-
163
- proxy_http_version 1.1;
164
-
165
- proxy_set_header Upgrade $http_upgrade;
166
-
167
- proxy_set_header Connection "upgrade";
168
-
169
- }
170
-
171
-
172
-
173
- }
127
+ server {
128
+
129
+ listen 80 proxy_protocol;
130
+
131
+ server_name hoge.hoge.jp;
132
+
133
+ proxy_request_buffering off;
134
+
135
+
136
+
137
+ set_real_ip_from XX.XX.0.0/XX; # VPC CIDR
138
+
139
+ real_ip_header proxy_protocol;
140
+
141
+
142
+
143
+ location /demo/ { # デモページ(html)
144
+
145
+ proxy_pass http://demo.localhost/;
146
+
147
+ }
148
+
149
+
150
+
151
+ location / { # socket.io用のjsファイルを読み込むのに使用します。
152
+
153
+ proxy_pass http://0.0.0.0:1000;
154
+
155
+ }
156
+
157
+
158
+
159
+ location /socket.io/ { # websocket通信
160
+
161
+ proxy_pass http://0.0.0.0:2000;
162
+
163
+ proxy_set_header X-Real-IP $proxy_protocol_addr;
164
+
165
+ proxy_read_timeout 150;
166
+
167
+ proxy_set_header Host $host:$server_port;
168
+
169
+ proxy_set_header X-Forwarded-For $proxy_protocol_addr;
170
+
171
+ proxy_set_header X-Forwarded-Proto http;
172
+
173
+ proxy_http_version 1.1;
174
+
175
+ proxy_set_header Upgrade $http_upgrade;
176
+
177
+ proxy_set_header Connection "upgrade";
178
+
179
+ }
180
+
181
+
182
+
183
+ }
174
184
 
175
185
  ```
176
186
 
@@ -227,3 +237,25 @@
227
237
  但し、BadRequestが出ています・・・
228
238
 
229
239
  もう少し調べてみます・・・!
240
+
241
+
242
+
243
+ **>ProxyProtocolを有効にしました。(追記:2016/02/10 19:21)**
244
+
245
+
246
+
247
+ ひとまず、現状の設定ファイルの内容に更新しました。
248
+
249
+ ProxyProtocolを有効にしたことで、Bad Requestが発生しています。
250
+
251
+
252
+
253
+ AWSのProxyProtocol使用の前提条件に「プロキシサーバーとロードバランサーの両方で有効になっていること」とありました。
254
+
255
+ http://blog.serverworks.co.jp/tech/2013/08/01/elb-proxy-protocol/
256
+
257
+ Nodeサーバー側でも何らかの処理が必要になるのでしょうか・・・?
258
+
259
+
260
+
261
+ その方面で検索すると[こちらの記事](http://blog.serverworks.co.jp/tech/2013/08/01/elb-proxy-protocol/)を発見しましたので、調べてみます。

2

進捗追記

2016/02/10 10:28

投稿

CyberMergina
CyberMergina

スコア295

test CHANGED
File without changes
test CHANGED
@@ -2,6 +2,24 @@
2
2
 
3
3
 
4
4
 
5
+ **□ 状態(追記しました)**
6
+
7
+
8
+
9
+ - リスナー設定
10
+
11
+
12
+
13
+ ```
14
+
15
+ TCP(80) -> TCP(80)
16
+
17
+ SSL(443) -> TCP(80)
18
+
19
+ ```
20
+
21
+
22
+
5
23
 
6
24
 
7
25
  **□ 今分かっていること**
@@ -178,4 +196,34 @@
178
196
 
179
197
 
180
198
 
199
+
200
+
201
+ **>ProxyProtocolを有効にしました。(追記:2016/02/10 16:28)**
202
+
203
+ 恐らくあと少しで解決しそうです・・・!
204
+
205
+
206
+
207
+ TaichiYanagiyaさんの案①を参考に設定すると、nginxのログにはアクセス元IPが出てきました!
208
+
209
+
210
+
211
+ ```
212
+
213
+ '$proxy_protocol_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent "$http_referer" ' '"$http_user_agent"';
214
+
215
+ ```
216
+
217
+
218
+
219
+ ```
220
+
221
+ - - [10/Feb/2016:16:15:01 +0900] "PROXY TCP4 [アクセス元IP] XXX.XXX.XXX.XXX 5602 443" 400 172 "-" "-"
222
+
223
+ ```
224
+
225
+
226
+
181
- 全くアクセス元IP取れなわけではないので、悩みどころで
227
+ 但し、BadRequest出て・・・
228
+
229
+ もう少し調べてみます・・・!

1

進捗を入力しました。

2016/02/10 07:28

投稿

CyberMergina
CyberMergina

スコア295

test CHANGED
File without changes
test CHANGED
@@ -155,3 +155,27 @@
155
155
  }
156
156
 
157
157
  ```
158
+
159
+
160
+
161
+ ***
162
+
163
+
164
+
165
+ **□ 進捗**
166
+
167
+
168
+
169
+ **AWSのELBにProxyProtocolを有効にするような設定が必要?**
170
+
171
+ > 参考
172
+
173
+ [AWS wiki](http://docs.aws.amazon.com/ja_jp/ElasticLoadBalancing/latest/DeveloperGuide/enable-proxy-protocol.html)
174
+
175
+ [How to configure AWS ELB and Nginx for WebSocket protocol? [closed]](http://stackoverflow.com/questions/33433768/how-to-configure-aws-elb-and-nginx-for-websocket-protocol)
176
+
177
+ [Using Proxy Protocol With Nginx](https://chrislea.com/2014/03/20/using-proxy-protocol-nginx/)
178
+
179
+
180
+
181
+ 全くアクセス元IPが取れないわけではないので、悩みどころです。