- nginx在一台服务器上
- jar包在另外一台服务器上
- 通过nginx反向代理上传图片显示405 请求为post
- 解决了405之后,图片https get访问获取不到
- 我的nginx为https://10.200.27.228:9215
- 后端jar包为10.200.27.233:8112
nginx 配置图片上传反向代理, 解决nginx 405 问题
location /file/upload {
proxy_set_header Connection 'upgrade';
proxy_set_header Upgrade $http_upgrade;
proxy_pass http://10.200.27.233:8112 #后端jar包的ip和端口;
}
解决https请求图片不加载问题,我的请求为https://ip:port/fileStatic//.png
1. nginx进行图片加载反向代理,因为请求为https,后端实际为http,所以进行图片代理为http
location /fileStatic {
proxy_pass http://10.200.27.233:8112/fileStatic;
}
2. yml文件配置
#图片实际存储linux的位置
defaultFile: /data/upload/
nginxUrl: https://10.200.27.228:9215/fileStatic/ #返回地址路径 nginx 代理路径
3. jar包里添加如下代码
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import java.io.File;
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Value("${defaultFile}")
public String defaultFile;
@Value("${nginxUrl}")
public String nginxUrl;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
String start = nginxUrl.substring(nginxUrl.lastIndexOf(":") + 1, nginxUrl.length());
String urlArg[] = start.split("/");
registry.addResourceHandler("/" + urlArg[1] + "/**").addResourceLocations("file:" + defaultFile + "/");
}
当图片进行上传完成后,进行图片加载即可成呈现,本方法只适合单机nginx和jar包不在同一台服务器
如果nginx和jar在同一台服务器,nginx配置为
location /fileStatic {
alias /data/upload;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods 'GET,POST';
add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
charset utf-8,gbk;
}