2016-08-12 2 views
1

Ich habe einen Proxy-Pass für einen JAVA-Web-Service konfiguriert, um Kreuzursprung zu ermöglichen. Ich kann eine Post-Anfrage mit der Web-Service-URL http://10.1.200.156:8080/ClientService/passwordReset/ senden, aber http://10.1.200.156/ClientService/passwordReset/ gibt einen 404-Fehler. Und Client-Anwendung gibt Response for preflight is invalid (redirect). Nach der Suche im Internet habe ich proxy_set_header Host $http_host; der Nginx-Konfiguration hinzugefügt, aber immer noch kein Glück. Unten die Nginx-Konfiguration. Bitte helfen Sie.Nginx Proxy Pass 404 Fehler - CORS

http { 
    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; 
    tcp_nodelay   on; 
    keepalive_timeout 65; 
    types_hash_max_size 2048; 

    include    /etc/nginx/mime.types; 
    default_type  application/octet-stream; 

    include /etc/nginx/conf.d/*.conf; 

    server { 
    listen 80; 
    server_name euca-172-16-10-214.eucalyptus.internal; 

    location /ClientService/passwordReset/ { 
     proxy_pass http://10.1.200.156:8080/ClientService/passwordReset/; 

      if ($request_method = 'OPTIONS') { 
       add_header 'Access-Control-Allow-Origin' '*'; 
       add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; 
       add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; 
       add_header 'Access-Control-Max-Age' 1728000; 
       add_header 'Content-Type' 'text/plain charset=UTF-8'; 
       #add_header 'Content-Length' 0; 
       return 204; 
       } 

      if ($request_method = 'POST') { 
       add_header 'Access-Control-Allow-Origin' '*'; 
      add_header 'Access-Control-Allow-Credentials' 'true'; 
       add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; 
       add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; 
       } 

      if ($request_method = 'GET') { 
       add_header 'Access-Control-Allow-Origin' '*'; 
      add_header 'Access-Control-Allow-Credentials' 'true'; 
       add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; 
       add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type'; 
       } 
     } 
    } 
} 
+1

Sie sollten die URI nicht einschließen, wenn Sie sich bewerben. 'proxy_pass http: //10.1.200.156: 8080;' –

+0

Vielen Dank Es funktioniert jetzt. – lpsandaruwan

+0

Ich bin froh, dass ich helfen konnte. Bitte akzeptiere es als Antwort –

Antwort

3

Sie sollten den URI nicht bei der Proxy-Verarbeitung angeben. Versuchen Sie Folgendes:

proxy_pass http://10.1.200.156:‌​8080;