Nginx
nginx 不會將外部請求傳遞給 localhost
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 次或更多次。