https 配置需要下载nginx版的ssl证书 下载下来后的目录文件

window nginx后台运行_window nginx后台运行

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