docker搭建前后端分离项目通过Nginx部署https到外网服务器

一:项目准备:

1、安装docker和docker-compose(项目通过docker部署)

2、项目在内网能部署成功

3、编写好docker-compose文件,进行docker登录

二:实施

1、docker-compose create;docker-compose start  启动项目

2、权限问题:部署完成后,无法连接数据库是因为服务器的端口没有打开(默认3306端口),一次可以把需要用到的端口打开,(怎么打开,百度了解)。

3、端口打开后,可以使用工具Navicat for mysql连接数据库,将本地数据库的表复制到外网数据库中(也可以使用其他方法,比如copy数据库放到数据库目录下,不过,不建议);并且查看数据库账号的权限。

4、创建网络,docker network xxxxxx;进入docker容器,docker exec -it 容器名  bash; 查看容器的IP,docker inspect (容器名)。

5、部署到外网,需要域名,所以,

第一步要申请一个域名,跳转到阿里云服务器,找到域名...,选择解析(这些可以去百度,都是有的,不详细说)

域名服务器如何绑定:https://blog.csdn.net/rentian1/article/details/95593787

域名如何加入前缀:https://jingyan.baidu.com/article/f71d60373687ba5ab641d1fa.html

6、如何让http变成https,操作起来算简单,就是生成证书,把证书添加到服务器内;其实https=http+ssl;httpshui会对报文进行加密,(做过https的接口测试应该就知道,你直接访问是报错的,需要你上传一个证书的);详细可了解https://segmentfault.com/a/1190000018992153

证书生成:https://freessl.cn/(好像免费证书只能持续90天)

7、在服务器控制台中操作,最后就生成证书

 

8、配置Nginx

不懂的可以留言问,建议自己多尝试几波,毕竟有万能的百度

user  nginx;
worker_processes  1;

error_log  /data/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/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  /data/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
	
	server {
	listen       80;
	server_name  前端域名;
	location /{
		#此处配置的域名必须与upstream的域名一致,才能转发。
		proxy_pass http://容器名:80;
		proxy_set_header Host $host:$server_port;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_connect_timeout       5;
		proxy_read_timeout          60;
		proxy_send_timeout          5;
		#auth_basic "Restricted"; 
		#auth_basic_user_file htpasswd; 			
	}
	
	#error_page  404              /404.html;

	# redirect server error pages to the static page /50x.html
	#
	error_page   500 502 503 504  /50x.html;
	location = /50x.html {
		root   html;
		}
	}
	server {
    	listen 443 ssl;
    	server_name 前端域名;
    	#ssl on;
    	root html;
    	index index.html index.htm;
		ssl_certificate	/etc/nginx/cert/yq_chain.crt;  证书
		ssl_certificate_key	/etc/nginx/cert/yq_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;
	    location / {
    		proxy_set_header  Host 前端域名;
    		proxy_pass http://容器名:80;
    		#proxy_intercept_errors on;
    		#error_page 301 302 307 = @handle_redirect;
    	}
    }
	server {
	listen       80;
	server_name  后台域名;
	location /{
		#此处配置的域名必须与upstream的域名一致,才能转发。
		proxy_pass http://容器名:8080;
		proxy_set_header Host $host:$server_port;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_connect_timeout       5;
		proxy_read_timeout          60;
		proxy_send_timeout          5;
		#auth_basic "Restricted"; 
		#auth_basic_user_file htpasswd; 			
	}
	
	#error_page  404              /404.html;

	# redirect server error pages to the static page /50x.html
	#
	error_page   500 502 503 504  /50x.html;
	location = /50x.html {
		root   html;
		}
	}
	server {
    listen 		443 ssl;
    server_name 后台域名;
    #ssl on;
    root html;
    index index.html index.htm;
	ssl_certificate	/etc/nginx/cert/yqs_chain.crt;
	ssl_certificate_key	/etc/nginx/cert/yqs_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;
		    location / {
    		proxy_set_header  Host 后端域名;
    		proxy_pass http://容器名:8080;
    		#proxy_intercept_errors on;
    		#error_page 301 302 307 = @handle_redirect;
    	}
	
    }
}

 

 9、输入前端域名即可访问,说明搭建成功。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值