2017-12-15 7 views
0

클라이언트 서버에서 게시물 데이터가 수신되는 위치에서 수신 요청을 받고 내 서버로 전달 된 후 데이터베이스에 저장됩니다. nginx를 실행 중입니다. 정확히 어떻게 Nginx를 구성하여 해당 요청을 수신하고 응용 프로그램 백엔드에 특정 URL을 사용하여 데이터베이스에 저장할 수 있는지 알 수 없습니다. nginx 클라이언트 IP 주소 및 게시 된 요청을 제공하고 싶습니다.Nginx는 클라이언트 서버에서 게시물 요청을 수신 한 다음 요청과 클라이언트 IP를 백엔드 특정 URL에 전달합니다.

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을 반환 할 필요는 없습니다. 요청이 전달되는 응용 프로그램에서 처리하므로이 부분에서 200을 반환 할 필요가 없습니다.

+0

클라이언트 서버의 게시물 요청이 200의 헤더로 응답하지 않으면 내 서버에 게시되지 않습니다. 그게 처음 200 반환 이유 – Peter88tom

+0

클라이언트 서버가 502 불량 게이트웨이 답장을 시도했습니다 – Peter88tom

+0

'return 200'을 제거했으며'proxy_pass'를'proxy_pass http : // my_server_ip/user/user_request /'로 수정했고 이제는 nginx 오류가 발생했습니다. worker_connections가 업스트림에서 응답 헤더를 읽는 동안 충분하지 않다는 로그를 기록합니다. – Peter88tom