Nginx

nginx 不會將外部請求傳遞給 localhost

  • August 30, 2016

Jetty 伺服器在 localhost:8080 上執行,並在我通過 curl(putty)發出請求時成功響應:

curl -H "Content-Type: application/json" -X POST -d '{"message":"Hi"}' http://localhost:8080

我有以下nginx.conf配置:

server{
       listen 80;
       server_name 52.27.79.132;
       root /data/www;
       index index.html

       # static files: .png, .css, .js...
       location /static/ {
          root /data/www;
       }

       location ^~/api/*{
           proxy_pass        http://localhost:8080;
           proxy_set_header  X-Real-IP $remote_addr;
           proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_set_header  Host $http_host;
       }

   }

# include /etc/nginx/sites-enabled/*;

當碼頭伺服器收到對“/”的請求時,Java servlet 執行

瀏覽器成功返回 index.html 頁面,但是當 javascript 向“ http://52.27.79.132/api/ ”發出 AJAX 請求時出現 404 錯誤

有誰知道為什麼?

正則表達式在您的版本中不正確。但是,您實際上並不需要正則表達式匹配,因此您可以使用此版本:

location /api {
   proxy_pass        http://localhost:8080;
   proxy_set_header  X-Real-IP $remote_addr;
   proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header  Host $http_host;
}

如果您出於某種原因想使用正則表達式,第一行應如下所示:

location ^~ ^/api/.*

點表示任何字元,星號表示重複 0 次或多次。

在您的原始位置行中,您重複/了 0 次或更多次。

引用自:https://serverfault.com/questions/800020