Nginx问题记录(持续更新)

记录遇到的Nginx问题:

1、nginx转发到其他地址,因为server层默认配置的proxy_set_header Host $host;
L F # A 5要在location层配置proxy_set_header Host $proxy_host;


location /xxx/ {
proxy_pass http://www.baidu.com/;
proxy_set_header Host $proxy_host;
}

2、nginx图片跨域问题

##. k ? z %在location配置

location /xxx/ {
proxy_( + c = ^ o kpass http://xxx:80/;
add_headerb # / I O [ p a Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
add_header Access-d ! T kCo D zontra W g col-Allow-Headers b B S # v 6'DNT,X-Mx-ReqToken,K_ { V | n k A {eep-Alive,User-Agent,X-ReO 0 Q 7 ( E T _ Iquested-W_ k c 3 x p { yith,If-Modified-Since,Cache-Control,Content-Type,Authorization';
if ($request_method = 'OPTIONS') {
return 204;
}
}

*3& A 3 P v q d图片跨域问题解决带cookie,主要1、add9 5 - - e N | j_header Access-Control-Allow-Origin不能用
主要2、add_header Access-Control-Allow-Credentials true;**

location /file/ {
proxy_pass httpi d k://xxxx:O  t 8 ? & `80/;
#指定允许跨域的方法,*代表所有
add_header Access-Control-Allow-Methods *;
#预检命令的缓_  /存,如果不缓存每次会发送两次请求
aD _ . M s I n Vdd_header Access# f ? W 3 g-Control-Max-Age 3600;
#带cookie请求7 V * $ q要加上这个字段,并设置为true
add_header Access-Control-Allow-Credentials true;
#表示允许这个域跨域调用(客户端发送请求的域名和端口)
#$http_origin动态获取请求客户端请求的域 不用*的原因是带cookie的请) = Z E 5 2求不支持*号
add_header Access-Control-Allow-Origin $http_Y } d R b U c V :origin;
#表示请求头的字段 动态获取
add_header Access-Control-Allow-Headers
$http_acc- u 9 ?ess_cop F Untrol_request_headers;
#OPTIONS预检命令,预检命令通过时才发送请求
#检查请求的类型是不是预检命令
if ($request_method = OPTIONP @  ,S){
return 204;
}
}

**4、前端默认跳转到index.html,需要在应用6 # _ C w x所在的nginx修改,
不能在w 0 a _ m J ( v M(暂时没发现怎么8 b D p $ o处理)nginx转发处理即:不能在以下修改***

location /yytour/ {
proxy_pass http://xxxxxx:80/;
}
location ^~ /yytour/admin/ {
root /usr/share/nginx/html;
try_files $uri $uri/ /yytour/admin/index.html;
}

5、nginx转发配置缓存

location /xxxxx/ {
proxy_pass http://xxxxxx:80/;
if ($request] 8 d @ H r 4 M_filename ~* ^.*g S u & N?.(htm|html)$){u { + A =  { . p
add_header Cache-Control "pr$ # B Z d B ` &i` D i L # P kvate, no-store, no-cache, musi S b L K *t-reval3 w b 1 & k & G 5idate, proxy-revalidate";
expiresG X N e 6 $ C O I -1;
}
if ($requestW g s ? # {_filename ~* ^.*?.(gif|jpg|jpeC ? !g|png|bmp|swf)$){
expires 30d;
}
if ($requG + Jest_filename ~* ^.*?.(js|css)$){
expires 12h;
}
}