nginx跨域配置

跨域配置范例一:允许所有跨域请求

server {

    listen       80;
    server_name  localhost;

    location / {
      root /html; 
      try_files $uri $uri/ /index.html;
    }

    location ^~ /api/ {

      add_header Access-Control-Allow-Origin $http_origin;
      add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
      add_header Access-Control-Allow-Credentials true;
      add_header Access-Control-Allow-Headers X-Auth-Token,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type;
      add_header Access-Control-Max-Age 1728000;
      if ($request_method = OPTIONS) {return 204;}

      proxy_pass  http://127.0.0.1:8080;
      proxy_set_header Host $host;
      proxy_redirect off;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_connect_timeout 60;
      proxy_read_timeout 60;
      proxy_send_timeout 60;
      proxy_buffers 8 1024k;
      proxy_buffer_size 1024k;
    }

    error_page  404              /404.html;
    location = /404.html {
      root /usr/local/nginx/html/notFound.html;
    }

    error_page   500 502 503 504  /500.html;
    location = /500.html {
      root /usr/local/nginx/html/error.html;
    }

}

跨域配置范例二:对特定的域名开放api接口跨域

server {
  listen 80;
  server_name localhost;
  
  location / {
    root html;
    try_files $uri $uri/ /index.html;
  }
  location ^~ /api/ {
    if ($http_origin ~ \.example\.com) {
      add_header Access-Control-Allow-Origin $http_origin;
      add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
      add_header Access-Control-Allow-Credentials true;
      add_header Access-Control-Allow-Headers X-Auth-Token,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type;
      add_header Access-Control-Max-Age 1728000;
    }
      if ($request_method = OPTIONS) {return 204;}
  
    proxy_pass  http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_connect_timeout 60;
    proxy_read_timeout 60;
    proxy_send_timeout 60;
    proxy_buffers 8 1024k;
    proxy_buffer_size 1024k;
        
  error_page  404              /404.html;
    location = /404.html {
      root /usr/local/nginx/html/notFound.html;
    }

  error_page   500 502 503 504  /500.html;
    location = /500.html {
      root /usr/local/nginx/html/error.html;
  }
}

标签: NginX

添加新评论