2017-08-30 55 views
0

我想安裝使用Nginx的快速度誤差時,反向代理

爲Contentful CDN緩存反向代理

我的配置如下:

http { 
    proxy_cache_path /my/cache levels=1:2 keys_zone=STATIC:10m  inactive=24h max_size=1g; 

    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; 

    # Load modular configuration files from the /etc/nginx/conf.d directory. 
    # See http://nginx.org/en/docs/ngx_core_module.html#include 
    # for more information. 
    include /etc/nginx/conf.d/*.conf; 


     server { 
      listen 443 ssl; 
      server_name my.domain.com; 
      server_tokens off; 
      root /my/www/client; 
      index index.html; 
      try_files $uri $uri/ /index.html; 

      auth_basic "Private Property"; 
      auth_basic_user_file /pass/.htpasswd; 


      ssl_certificate /my/ssl/cert.crt; 
      ssl_certificate_key /my/ssl/key.key; 
       ssl_dhparam /etc/ssl/certs/LS-dhparam.pem; 
       ssl_protocols  TLSv1 TLSv1.1 TLSv1.2; 
       ssl_prefer_server_ciphers on; 
       ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECD$ 

      location /spaces { 
       index index.html index.htm; 
       charset utf-8; 
       proxy_pass http://cdn.contentful.com/spaces/spaceId/entries?access_token=accessTokenValue; 
       proxy_ignore_headers Cache-Control Expires; 
       proxy_cache STATIC; 
       proxy_cache_valid 200 10m; 
       proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504; 
       proxy_redirect off; 
       proxy_set_header Host $host; 
       proxy_set_header X-Forwarded-Host $host; 
       proxy_set_header X-Forwarded-Server $host; 
       proxy_set_header X-Real-IP $remote_addr; 
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_For; 
       proxy_set_header Connection ""; 
       proxy_http_version 1.1; 

       proxy_connect_timeout 90s; 
       proxy_send_timeout 90s; 
       proxy_read_timeout 90s; 
       proxy_buffer_size 4k; 
       proxy_buffers 4 32k; 
       proxy_busy_buffers_size 64k; 
       proxy_temp_file_write_size 64k; 
       send_timeout 90s; 

      } 
     } 
} 

其中當然spaceId和accessTokenValue是合適的人

我再觸發https://my.domain.com/spaces/&content_type=myContent&locale=en

它返回該錯誤的請求:快速度的錯誤:未知的領域:我的。 domain.com。請檢查此域是否已添加到服務中。

它工作時,我嘗試使用完整的URL爲:http://cdn.contentful.com/spaces/spaceId/entries?access_token=accessTokenValue&content_type=myContent&locale=en

有什麼不對我的nginx的配置還是有距離contentful身邊的東西嗎?

+0

你是否希望將來自原始請求的參數傳遞給代理傳遞?也是絕對的網址'https:// my.domain.com/spaces /',或者之後你會有其他東西? –

+0

我想通過是的。 (您可以在示例中看到這兩個網址,我希望第一個網址轉換爲第二個網址) – mangusbrother

+0

然後將proxy_pass更改爲'proxy_pass http://cdn.contentful.com/spaces/spaceId/entries?access_token=accessTokenValue&$ query_string';看看是否有幫助 –

回答

1

您需要刪除

proxy_set_header Host $host; 

對於這個工作。因爲當你proxy_pass到proxy_pass http://cdn.contentful.com/spaces/spaceId/entries?access_toke‌​n=accessTokenValue&$‌​query_string,你想主機名保持爲cdn.contentful.com,而不是改變它