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

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

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

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

解決済

nginxでリバースプロキシを使った際に取得したIPアドレスが127.0.0.1になっている

CyberMergina
CyberMergina

総合スコア0

nginx

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

1回答

0評価

0クリップ

7662閲覧

投稿2015/12/09 10:48

編集2022/01/12 10:58

nginxとnodeサーバーを使ったアプリで現象が起きています。

IPアドレスは、socket.io の「handshake.address」を使って取得しようとしています。

nginxでリバースプロキシを使うとヘッダー情報のIPアドレスが127.0.0.1に書き換わる(?)という事象があるというのは

サイトでいくつか見て、それぞれ対処法を試してみたのですが、変化ありません。。

おかしなところがありましたら、ご教授頂きたいです。

よろしくお願い致します。

設定ファイル

nginx.conf

conf

user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; # ! modified ! # gzip on; proxy_buffering on; proxy_buffer_size 8k; proxy_buffers 100 8k; server_tokens off; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Client-IP $remote_add; proxy_set_header Host $http_host; proxy_redirect off; include /etc/nginx/conf.d/*.conf; }

default.conf

conf

map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { # demo site(http://demo.localhost/) listen 80; server_name demo.localhost; root /var/www/hoge/demo_site; index index.html; } server { listen 80; server_name hoge.huga.jp; location / { proxy_set_header Host $http_host; proxy_pass http://0.0.0.0:2222; } location /socket.io/ { proxy_pass http://0.0.0.0:1111; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } } server { listen 443; server_name hoge.huga.jp; location / { proxy_pass http://0.0.0.0:2222; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } } server { listen 80 default_server; server_name _; return 444; }

socket_ctrl.js

javascript

~ 省略 ~ //接続確立時の処理 connect = io.sockets.on('connection', function (socket) { // 接続時 socket.on('connected', function (r) { console.log(socket.handshake); // ひとまずここでヘッダー情報をとれるか確認してます。

(※原因はnginxの設定ファイルだと今のところ思っているので、websocketはタグ付けしません。)

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

nginx

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