https 配置需要下载nginx版的ssl证书 下载下来后的目录文件
nginx 目录中
conf 是文件配置目录
logs是日志:
具体access.log 是拦截日志 error.log 是错误日志 另外还会有个pid的文件
conf文件夹中的nginx.conf是nginx的配置文件
准备工作
将自己的前端,静态文件目录,及其他放置好,启动自己的jar项目(非80端口)
将下载的ssl证书放在conf中
开始配置
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
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"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip on;
gzip_min_length 1k;
gzip_comp_level 9;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript;
gzip_proxied any;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
##############################################
#上面的就不说的 自己查 这里着重说下这里的配置##
##############################################
server {
listen 80; # 80端口
server_name www.****.com;# 自己的域名
client_max_body_size 1000m;
#rewrite ^(.*)$ https://$host$1 permanent; #该项是为了能够80自动跳转https443端口
#charset koi8-r;
#access_log logs/host.access.log main;
#####################################
#这里开始自上而下 进行上下文拦截#######
#####################################
###这里拦截请求是域名+/的配置
location / {
root D:\wechat\Website; # 根目录
index index.html; #默认首页
}
# ^~+空格 这个必须有 否则有可能出问题
# /show 表示拦截这个请求:www.***.com/show 他默认进入的是 D:\wechat目录下的login.html
# 下面同理
location ^~ /show {
root D:\wechat;
index login.html;
}
location ^~ /management {
root D:\wechat;
index login.html;
}
location ^~ /yanta {
root D:\wechat;
index login.html;
}
location ^~ /fourtee {
root D:\wechat;
index login.html;
}
location ^~ /wechat {
root D:\wechat;
index login.html;
}
#########################################
#这里配置的是tomcat反射代理###############
########################################
## 这里的yanta 是你jar包 后台服务的server.servlet.contextPath 的配置
# 这里记录下 以前不理解的 上下文 这下 终于明白了 哈哈哈哈~~~~~~~~~~~~~
location ^~ /yanta {
proxy_pass http://ip:端口/yanta/; #你的后台请求url
proxy_set_header Host ip; #这里将自己后台的ip放入请求头,以便前台页面可以获取
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
###########################################
#这里配置https请求 即443端口################
###########################################
# HTTPS server
#
server {
listen 443 ssl; #表示监听 443端口 ssl证书
server_name www.****.com; #域名
server_tokens off; # 隐藏版本信息
ssl_certificate ***************.pem; #ssl证书路径 相对conf文件夹的路径
ssl_certificate_key ************.key;# 同上 是key文件
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
##############################
#这里拦截方式同http请求拦截相同#
##############################
location / {
root D:\wechat\Website;
index shouy.html;
}
location ^~ /show {
root D:\wechat;
index login.html;
}
location ^~ /management {
root D:\wechat;
index login.html;
}
location ^~ /yanta {
root D:\wechat;
index login.html;
}
location ^~ /fourtee {
root D:\wechat;
index login.html;
}
location ^~ /wechat {
root D:\wechat;
index login.html;
}
#####################################
#这里特别注意 请求仍然是http 而非https#
#####################################
location ^~ /sxby-yanta {
proxy_pass http://ip:端口/yanta/;
proxy_set_header Host 222.100.208.98;
#proxy_set_header X-Real-IP $remote_addr;
#proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
}
另外这里我大概说下 我对nginx的理解.
首先 你通过域名访问,nginx对你域名后的上下文进行拦截,
同你的配置进行. 拦截至哪个 ,他就将请求发送至哪里.
如:拦截到 上面的/yanta 他就将请求发送至你的后台服务的url
但是这样在外网看来还是通过域名访问的
这个很大实质上帮我解决了微信小程序必须是https请求的问题 .之前一直采用的打war包
让我很难受 ,前后端分离的 ,码完后,在打war,好难受
现在终于解决了 嗨呀
毕竟这里我认识还是不足 ,理论知识不够,只是通过实践来解决了这个问题 ,有误的地方 希望大家不吝赐教!!
蟹蟹
补充:在后续使用中出现了nginx反向代理页面刷新的问题
解决方法:
##在代理时在下面代码中添加
location ^~ /xx{
root D:\YY;
index login.html;
##添加的部分##
if (!-e $request_filename) {
rewrite ^(.*)$ /XX/login.html?s=$1 last;
break;
}
####END######
}
其中$空格后面的直到?为反向代理的二级或者更高级的域名加上首页
所以上面写为
/XX/login.html