linux系统下使用nginx反向代理asp.net core,并配置免费的https证书
反向代理是为动态 Web 应用提供服务的常见设置。 反向代理终止 HTTP 请求,并将其转发到 ASP.NET Core 应用。
1.在asp.net core项目中的Startup的Configure方法中配置中间键来转接 X-Forwarded-For
和 X-Forwarded-Proto
标头
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});
2.之后在本地将项目发布,在将发布后的文件复制到linux服务器上
3.运行项目
这里介绍两种方法:
(1)直接使用dotnet 命令运行程序
表示在后台运行该应用 nohup dotnet [应用的dll] &
ps : 想要停掉后台应用时: 先使用 netstat -lntp 找到进程的ID,在使用kill -9 [id] 杀死该进程;
(2)docker容器运行
Dockerfile
FROM microsoft/dotnet:2.2.-aspnetcore-runtime
WORKDIR /app
COPY . /app
EXPOSE /tcp
ENTRYPOINT ["dotnet" , "User.API.dll"]
构建镜像(将Dockerfile文件放在linux服务器上的项目文件的根目录下) docker build -t [镜像名] . 启动容器
-d : 表示该容器在后台运行
-p :容器暴露的端口和要映射容器内应用的端口 docker run -d -p : --name [容器名] [镜像名]
之后使用 docker ps 命令就可以查看到正在运行的容器
当程序运行起来后,记得去你虚拟机云服务商管理界面把对应的端口打开,之后在外网使用ip就可以访问当页面了。(假如还是访问不了,那就在检查一下虚拟机内部的防火墙是否打开了,打开了就把防火墙给关了,一般来说就是这两个问题)
4.安装nginx (根据你的linux系统,直接google一下就行了)
5.修改nginx配置文件 /etc/nginx/sites-available/default ,使用 vim 命令打开
server {
listen ; #nginx监听那个端口,记得也要去把80端口打开哟
server_name example.com *.example.com; #域名填你的,网上也有许多免费的,去弄一个,再将本机的公网ip绑定上去
location / {
proxy_pass http://localhost:5000; #本地应用地址及端口,可以使用 curl 命令测试一下
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
将上面的内容替换进行,在保存退出即可 (不熟悉vim命令的也可以google学习一下)
修改好上的defalut配置文件夹后,使用的 nginx -s reload重启一起nginx及可
做到这一步就可以在外网直接使用ip进行访问了,不用加端口号,因为默认的就是80端口
这里还有微软爸爸的文档可以看
6.在上面的步骤都顺利后就可以来配置https了
免费的https证书 : https://certbot.eff.org
在首页选好你的反向代理服务器和linux版本后,就按照提示的命令行安装就行
7.最后
如果nginx出现问题了,比如:访问的时候出现 502 bad Gateway,那我们就去 /var/log/nginx 文件夹下看看最近的error.log日志,将错误信息复制下来,google一下,一般都能找到解决方法的。
linux系统下使用nginx反向代理asp.net core,并配置免费的https证书的更多相关文章
- Nginx反向代理+负载均衡简单实现(手动申请https证书,申请免费https证书,http强转https)
背景:A服务器(192.168.1.8)作为nginx代理服务器B服务器(192.168.1.150)作为后端真实服务器 现在需要访问https://testwww.huanqiu.com请求时从A服 ...
- Nginx 反向代理 负载均衡 虚拟主机配置
Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常 ...
- 【转】Nginx 反向代理 负载均衡 虚拟主机配置
原文:http://www.cnblogs.com/itdragon/p/8059000.html Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代 ...
- nginx 反向代理 与 Apache backend的配置联合配置
nginx 反向代理 与 Apache backend的配置联合配置: 说明: nginx 将http映射到Apache上的特定子目录. 配置方法步骤: 1. 设置域名, 子域名映射到指定服务器ip ...
- Nginx 反向代理工作原理简介与配置详解
Nginx反向代理工作原理简介与配置详解 by:授客 QQ:1033553122 测试环境 CentOS 6.5-x86_64 nginx-1.10.0 下载地址:http://nginx. ...
- Linux 下的 Nginx 反向代理配置.
最近实践中遇到了需要利用 nginx 进行反向代理服务器请求的需求,以前没怎么碰触过,因此花了1个多小时,快速阅览了一下nginx官网在反向代理服务中给出的基本定义: 说实话,官网给予的定义是精准的, ...
- 利用DockerHub在Centos7.7环境下部署Nginx反向代理Gunicorn+Flask独立架构
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_165 上一篇文章:Docker在手,天下我有,在Win10系统下利用Docker部署Gunicorn+Flask打造独立镜像,是在 ...
- [nginx]Windows和Mac下,nginx反向代理服务器配置
最近做项目,前端需要用到nginx反向代理来转发请求,总结了一下在Windows和Mac上的配置,以备查询. 一.Windows 修改nginx的配置文件,nginx.conf. 1)nginx.co ...
- 【Todo】秒杀系统 & 乐观锁 & Nginx反向代理
http://www.csdn.net/article/2014-11-28/2822858 1. 单点帐号验证,不用读,而是用写入,Redis,看是否加watch 2. 抢宝的最终购买冲突.包装称“ ...
随机推荐
- IBM LOTUS DOMINO 9 部署SSL证书
前言 随着SHA1算法在2016年12月31日以后,将被强制淘汰,所有新的SSL证书都必须支持SHA256算法,所以我们必须将IBM Domino Server升级到9.0以上才可以支持SHA256算 ...
- linux的initcall机制
linux的initcall机制(针对编译进内核的驱动) initcall机制的由来 我们都知道,linux对驱动程序提供静态编译进内核和动态加载两种方式,当我们试图将一个驱动程序编译进内核时,开发者 ...
- Alpha2项目的测试
这个作业属于哪个课程 课程的链接 这个作业的要求在哪里 作业要求的链接 团队名称 西柚三剑客 这个作业的目标 -测试其他团队的作品,并进行体验总结 姓名 学号 团队名称 段小刚 20173106231 ...
- Win10更新后wireshark无法获取网络接口
一不小心win10自动更新了,打开wireshark发现它无法发现本地的网络接口. 其实解决的办法很简单,就是卸载npcap,安装Win10Pcap即可解决.
- Celery详解(2)
除了redis,还可以使用另外一个神器----Celery.Celery是一个异步任务的调度工具. Celery是Distributed Task Queue,分布式任务队列,分布式决定了可以有多个w ...
- CSRF/XSRF 跨站请求伪造
CSRF/XSRF 跨站请求伪造 CSRF(Cross Site Request Forgery, 跨站域请求伪造)也称 XSRF, 是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安 ...
- CF1245 A. Good ol' Numbers Coloring(java与gcd)
题意:给定数字A和数字B,问是否满足gcd(A,B)==1. 思路:可以直接写函数gcd.也可以用大数自带的gcd功能. 代码1: /* @author nimphy @create 2019-11- ...
- Shell编程 | 脚本参数与交互及常见问题
在执行一个脚本程序时,会经常需要向脚本传递一些参数,并根据输入的参数值生成相应的数据或执行特定的逻辑. 向脚本传递参数 执行Shell脚本时可以带有参数,在Shell脚本中有变量与之对应进行引用.这类 ...
- 怎么解决禅道启动服务mysqlzt时的端口失败
打开Windows任务管理器 查看服务是否有MySQL正在运行,停止服务 启动mysqlzt服务 重新启动禅道
- leetcode209. 长度最小的子数组
双指针滑动窗口解法,时间复杂度O(N). 滑动窗口,想象一下,在一个坐标上存在两个指针begin 和i ,begin 代表滑窗的左边框,i代表滑窗的右边框.两者通过分别向右滑动,前者能使窗口之间的和减 ...