2016-08-30 17 views
1

NGINXに関するガイダンスを探して、ソースIPアドレスをバックエンドサーバーに渡します。これまでのところ、http/s要求に対してはこれを行う方法でconfigを見つけましたが、http/s以外のポートへのTCP/UDPロードバランシングでは見つかりませんでした。nginx udp proxy pass ip

私はUDPプロキシをセットアップしてNGINXと連携していますが、アプリケーション(syslogサーバ)のソースIPはNGINXのソースIPで表示され、syslogメッセージを送信するデバイスでは表示されません。

以下は私の設定です - これまでは、元のサーバーから送信元IPを渡す方法については空になっています。

stream { 
    server { 
     listen 514 udp; 
     proxy_pass syslog_standard; 
    } 

    upstream syslog_standard { 
     server syslog1.ars.com:10514 max_fails=1 fail_timeout=10s; 
     server syslog2.ars.com:10514 max_fails=1 fail_timeout=10s; 
    } 
} 

任意の入力をいただければ幸いです!

+0

http://nginx.org/en/docs/stream/ngx_stream_proxy_module.html#proxy_bind –

+0

感謝、夜遅く、完全に設定の上を通過。興味のある人には、単純に 'proxy_bind $ remote_addr transparent; – thefiddler

答えて

5

上記のAlexey氏に非常に感謝しています。深夜と私はこの設定/ドキュメントを渡しました。これを実現するために探して誰のために

proxy_bind $remote_addr transparent;

1

serverブロックに以下を追加して、ここで

非常に簡単な修正 - 添付は、私はこれがなくてバランスのsyslogをロードするために取り組んで取得するために使用私のテンプレートの設定ですソース情報を変更する。

重要なビットは次のとおりです。 1. transparentを使用している場合は必ずrootとして実行し、それに応じてselinuxポリシーを変更してください。 2.この構成は、複数のサブネット上で複数のリスニングインターフェイスを使用できるように構築されています。単一のインターフェースのみを使用している場合は、2番目のserverスタンザを削除してください。

乾杯。

user root; 
worker_processes 8; 

error_log /var/log/nginx/error.log warn; 
pid /var/run/nginx.pid; 
events { 
    worker_connections 1024; 
} 

stream { 
log_format basic '$time_iso8601 $remote_addr ' 
         '$protocol $status $bytes_sent $bytes_received ' 
         '$session_time $upstream_addr ' 
         '"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"'; 

# Enable access_log statements for debugging 

access_log /var/log/nginx/stream.log basic; 

upstream syslog_servers { 
    least_conn; 
    server 1.2.3.4:10514; 
    server 1.2.3.5:10514; 
    server 1.2.3.6:10514; 
} 

server { 
    listen 10.11.12.13:514; 
    listen 10.11.12.13:514 udp; 

    proxy_responses 0; 
    proxy_pass syslog_servers; 
    proxy_buffer_size 4096k; 
    proxy_bind $remote_addr transparent; 

    # access_log /var/log/nginx/stream.log basic; 
} 
server { 
    listen 11.12.13.14:514; 
    listen 11.12.13.14:514 udp; 

    proxy_responses 0; 
    proxy_pass syslog_servers; 
    proxy_buffer_size 4096k; 
    proxy_bind $remote_addr transparent; 

    # access_log /var/log/nginx/stream.log basic; 
} 
関連する問題