2017-12-15 3 views
0

クライアントサーバーからポストデータを受け取って、サーバーに渡した後にデータベースに保存するポストリクエストを受け取ります。 nginxを実行している、私は正確にどのようにそれらの要求を受信し、特定のURLを使用してアプリケーションのバックエンドにそれらを受け取るようにNginxを設定するか分からないデータベースで保存することができます。私はクライアントのIPアドレスと投稿されたリクエストを与えるnginxしたいと思います。Nginxはクライアントサーバーからポストリクエストを受け取り、バックエンドの特定のURLにリクエストとクライアントIPを渡します

ありがとう、私はまだNginxを正しく使用する方法を学んでいます。ここで

は私がしようとしているが、これは機能を返して、その下の行が実行されていないと何も成功

server{ 
    listen 80; 
    server_name my_server_ip; 
    error_log /var/log/nginx/error.log; 
    # proxy_pass_header Server; 

    location/{ 

      proxy_pass http://127.0.0.1:8000; 
      proxy_set_header X-Forwarded-Host $server_name; 
      proxy_set_header X-Real-IP   $remote_addr; 

     } 

     location /user/user_request/{ 
      if ($request_method != 'POST'){ 
      return 405; 
      } 

      return 200; 
      proxy_set_header X-Forwarded-For $remote_addr; 
      proxy_set_header Host $host; 
      proxy_set_header X-Real-IP $remote_addr; 
      keepalive_requests 10; 
      keepalive_timeout 75s; 
      proxy_pass http://my_server_ip$request_uri; 
    } 


} 
+0

[proxy_pass urlにスラッシュを追加](https://stackoverflow.com/questions/25475021/nginx-location-path-with-proxy-pass)してみてください。 – xyres

+0

これは 'proxy_pass http:// my_server_ip/$ request_uri;'のようなものなので、@xyresを意味します。 – Peter88tom

+0

確かにそれを試すことができます。しかし、私は以下の答えがあなたの問題を理解していると思う。 – xyres

答えて

2

return 200;行を削除していないものです。この部分から200を返す必要はありません。これは、リクエストを転送しているアプリケーションによって処理されるためです。

+0

クライアントサーバーからの投稿要求は、200のヘッダーで応答しないと、私のサーバーに投稿されません。それはなぜ200を最初に返すのですか – Peter88tom

+0

クライアントサーバーは502の悪いゲートウェイに応答しました – Peter88tom

+0

'return 200'を削除しました。' proxy_pass'を 'proxy_pass http:// my_server_ip/user/user_request /'に変更しました。アップストリームから応答ヘッダーを読み取っているときにworker_connectionsが十分に失敗していないことをログに記録します。 – Peter88tom

関連する問題