通过nginx解决跨域问题,并测试_IP

通过nginx解决跨域问题,并测试_IP_02

*表示所有域名

# 测试域名
    server {
        listen 80;
        server_name chat.test.com;
        #配置根目录
        location / {
            proxy_pass http://127.0.0.1:3000;
        }

        location /api/ {

            # 设置允许跨域的域,* 表示允许任何域,也可以设置特定的域
            add_header 'Access-Control-Allow-Origin' '*';
            # 允许的方法
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            # 允许的头信息字段
            add_header 'Access-Control-Allow-Headers' 'User-Agent,Keep-Alive,Content-Type';
            # 缓存时间
            add_header 'Access-Control-Max-Age' 1728000;

            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;

            proxy_set_header Connection '';
            proxy_http_version 1.1;
            chunked_transfer_encoding off;
            proxy_buffering off;
            proxy_cache off;

            proxy_pass http://127.0.0.1:85;
        }

        location /socket.io/ {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
            proxy_pass http://localhost:84;
        }
    }

单个域名白名单

# 测试域名
    server {
        listen 80;
        server_name chat.test.com;
        #配置根目录
        location / {
            proxy_pass http://127.0.0.1:3000;
        }

        location /api/ {

            # 设置允许跨域的域,* 表示允许任何域,也可以设置特定的域
            add_header 'Access-Control-Allow-Origin' 'http://localhost:3000';
            # 允许的方法
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            # 允许的头信息字段
            add_header 'Access-Control-Allow-Headers' 'User-Agent,Keep-Alive,Content-Type';
            # 缓存时间
            add_header 'Access-Control-Max-Age' 1728000;

            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;

            proxy_set_header Connection '';
            proxy_http_version 1.1;
            chunked_transfer_encoding off;
            proxy_buffering off;
            proxy_cache off;

            proxy_pass http://127.0.0.1:85;
        }

        location /socket.io/ {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
            proxy_pass http://localhost:84;
        }
    }

 

同时配置多个域名:

# 测试域名
    server {
        listen 80;
        server_name chat.test.com;
        #配置根目录
        location / {
            proxy_pass http://127.0.0.1:3000;
        }

        location /api/ {
            if ($http_origin ~* (https?://(localhost|example2.com)(:[\d]+)?$)) {
                # 设置允许跨域的域,* 表示允许任何域,也可以设置特定的域
                add_header 'Access-Control-Allow-Origin' $http_origin;
                # 允许的方法
                add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
                # 允许的头信息字段
                add_header 'Access-Control-Allow-Headers' 'User-Agent,Keep-Alive,Content-Type';
                # 缓存时间
                add_header 'Access-Control-Max-Age' 1728000;
            }

            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;

            proxy_set_header Connection '';
            proxy_http_version 1.1;
            chunked_transfer_encoding off;
            proxy_buffering off;
            proxy_cache off;

            proxy_pass http://127.0.0.1:85;
        }

        location /socket.io/ {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
            proxy_pass http://localhost:84;
        }
    }

解决跨域前:

通过nginx解决跨域问题,并测试_IP_03

通过nginx解决跨域问题,并测试_Real_04

解决跨域后:

通过nginx解决跨域问题,并测试_运维_05