回答編集履歴

2

回答が誤っていたので、修正した。

2015/12/09 12:32

投稿

eripong
eripong

スコア1546

test CHANGED
@@ -1,20 +1,38 @@
1
1
  [Module ngx_http_realip_module](http://nginx.org/en/docs/http/ngx_http_realip_module.html)を使用されているようですが、
2
2
 
3
- これは指定したHTTPヘッダ、nginxへの接続元のアドレスを渡してくれるものです。
3
+ これは指定したHTTPヘッダから、nginxへの接続元のアドレスを取得するもので、nginxの手前にプロクシなどがある場合に使用るものです
4
4
 
5
+ 今回は、nginxの手前には何もないと思いますので、関係ありません。
5
6
 
7
+ そのため、以下の設定は不要と思います。
6
8
 
7
9
  ```
10
+
11
+ set_real_ip_from [グローバルIP];
8
12
 
9
13
  real_ip_header X-Forwarded-For;
10
14
 
11
15
  ```
12
16
 
13
- を指定しているので、HTTPヘッダのX-Forwarded-Forにアドレスが渡ります。
14
17
 
15
18
 
16
19
 
20
+
21
+ 逆に、以下のページにあるように、
22
+
23
+ 自分でX-FORWARDED-FORなどに、nginxへの接続元のアドレスを設定する必要があります。
24
+
25
+ ```
26
+
27
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
28
+
29
+ ```
30
+
31
+ [centos7 - nginx でアクセス元のIPを正しく表示させる方法 - Qiita](http://qiita.com/yakumo3/items/dc38a9b6c19194a88922)
32
+
33
+
34
+
17
- `handshake.address`は直接のTCP接続元を取得するもののようなので、
35
+ さらに、`handshake.address`は直接のTCP接続元を取得するもののようなので、
18
36
 
19
37
  HTTPヘッダをみるには、
20
38
 
@@ -23,3 +41,7 @@
23
41
 
24
42
 
25
43
  [express - How to get request’s HTTP headers with Socket.io? - Stack Overflow](http://stackoverflow.com/questions/13573016/how-to-get-request-s-http-headers-with-socket-io)
44
+
45
+
46
+
47
+

1

説明を詳細化した。

2015/12/09 12:32

投稿

eripong
eripong

スコア1546

test CHANGED
@@ -1,10 +1,22 @@
1
1
  [Module ngx_http_realip_module](http://nginx.org/en/docs/http/ngx_http_realip_module.html)を使用されているようですが、
2
2
 
3
- これは指定したHTTPヘッダに、実際のアドレスを渡してくれるものです。
3
+ これは指定したHTTPヘッダに、nginxへ接続元のアドレスを渡してくれるものです。
4
4
 
5
5
 
6
6
 
7
+ ```
8
+
9
+ real_ip_header X-Forwarded-For;
10
+
11
+ ```
12
+
13
+ を指定しているので、HTTPヘッダのX-Forwarded-Forにアドレスが渡ります。
14
+
15
+
16
+
7
- `handshake.address`は直接のTCP接続元を取得するもののようなので、
17
+ `handshake.address`は直接のTCP接続元を取得するもののようなので、
18
+
19
+ HTTPヘッダをみるには、
8
20
 
9
21
  以下にあるように、`handshake.headers['x-forwarded-for']`を使うべきです。
10
22