配置Nginx反代谷歌翻译API

22 min read
http {
    include       mime.types;
    default_type  application/octet-stream;

    # 日志格式设置
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    # 客户端请求头配置
    client_header_buffer_size 512k;
    large_client_header_buffers 4 512k;

    # 服务器配置
    server {
        listen       80;
        server_name  localhost;

        # 反向代理和跨域配置合并
        location /translate_a/single {
            # 反向代理配置
            proxy_pass https://translate.googleapis.com;
            proxy_set_header Host translate.googleapis.com;

            # 跨域配置
            if ($http_origin ~* (https?://[^/]+)) {
                set $cors_origin $http_origin;
            }

            add_header 'Access-Control-Allow-Origin' $cors_origin;
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';

            # OPTIONS 请求直接返回 204
            if ($request_method = 'OPTIONS') {
                add_header 'Access-Control-Max-Age' 1728000;
                add_header 'Content-Type' 'text/plain charset=UTF-8';
                add_header 'Content-Length' 0;
                return 204;
            }
        }
    }
}