Centos7安装jexus,部署asp.net core,asp.net mvc
什么是Jexus
- Jexus是一款Linux平台上的高性能WEB服务器和负载均衡网关,Jexus Web Service,简称JWS,以支持ASP.NET、ASP.NET CORE、PHP为特色,
同时具备反向代理、入侵检测等重要功能。可以这样说,Jexus是.NET、.NET CORE跨平台的最优秀的宿主服务器,
如果我们认为它是Linux平台的IIS,这并不为过,因为,Jexus不但非常快,而且拥有IIS和其它Web服务器所不具备的高度的安全性,
这是政府机构和重要企业对web服务器最必要也是最重要的品质需求。- 1)支持多站点,同一端口可以同时支持任何多的asp.net core应用程序;
2)应用程序启动、停止、重启与站点的启动、停止、重启等操作一致,无需手工管理asp.net core应用程序;
3)具有应用程序崩溃后自动重启功能,为企业级不间断运行保障;
4)具有比反向代理更高的性能优势。
5)提供与IIS相同的HTTP环境参数。
Jexus独立版(专业版)的安装自带mono。也就是说只要安装jexus即可,不用单独安装mono,其实他是把mono一起打包在jexus中了
但该版本只支持64位Linux操作系统,我安装的centos7系统刚好满足要求
输入命令: uname -r
这里的.x86_64跟x86是有区别的,.x86_64其实是32位像64位的一个过渡
具体:https://www.cnblogs.com/Totems/p/3198287.html
安装jexus独立版的命令是:注:运行安装命令,需要操作者有root权限。
curl https://jexus.org/release/x64/install.sh|sudo sh
输入命令回车:可以看到他会去下载文件:https://linuxdot.net/down/jexus-5.8.3-x64.tar.gz
下载完成并保存后,就会执行一系列的解压操作,可以看到压缩包里面包含mono,所以不用单独安装了
最后提示操作ok
切换到jexus,从上面标记的图片中可以看到jexus路径在: /usr/jexus
然后启动: sudo ./jws start
如果访问不成功,判断80端口是否开启
查看80端口是否开启
- firewall-cmd --query-port=80/tcp
开启80端口
- firewall-cmd --add-port=80/tcp --permanent
关闭80端口
- firewall-cmd --remove-port=80/tcp --permanent # --permanent 永久生效,没有此参数重启后失效
firewall-cmd --list-ports #查看已开放的端口
firewall-cmd reboot # 重启防火墙,端口立即生效,不需要重启电脑
修改时间:
timedatectl set-timezone Asia/Shanghai
然后重启才能生效
重启电脑相关命令:
- shutdown -h 10 #计算机将于10分钟后关闭,且会显示在登录用户的当前屏幕中
- shutdown -h now #计算机会立刻关机
- shutdown -h 22:22 #计算机会在这个时刻关机
- shutdown -r now #计算机会立刻重启
- shutdown -r +10 #计算机会将于10分钟后重启
- reboot #重启
- halt #关机
然后输入CentOS7的ip地址访问,如果出现这个404的异常页面,说明jexus启动成功了
之所以会异常,由于jexus的默认的网站配置文件指向的物理路径是 /var/www/default
这里注意下,网站必须放在 /var/www/ 下,不能是其他目录
直接cd 进入,发现没有这个路径,只有var文件夹,
安装jexus后,配置文件在 /usr/jexus/siteconf/default
cat default 可以查看default的内容
我们在/var下创建www文件夹,在www下创建default文件夹。创建完成后,进入 default文件夹,用vim编写一个简单的 index.html
可以递归创建文件夹: mkdir -p www/default
这样就创建了www和default文件夹,
进入到default创建index.html 文件: touch index.html
编辑: vim index.html 单击 i切换到输入状态,编辑完成后(我这里输入了:Hello Jexus),单击Esc键,输入:wq回车退出
vim相关命令:
- 按ESC键 跳到命令模式,然后:
- :w 保存文件但不退出vi
- :w file 将修改另外保存到file中,不退出vi
- :w! 强制保存,不推出vi
- :wq 保存文件并退出vi
- :wq! 强制保存文件,并退出vi
- :q 不保存文件,退出vi 在没有进入insert状态的时候
- :q! 不保存文件,强制退出vi
- :e! 放弃所有修改,从上次保存文件开始再编辑
刚上面启动了jexus是没有关掉的,你可以先stop然后在start,当然你也可以直接restart,
sudo /usr/jexus/jws restart
再次访问就成功了
jexus启动,停止命令,如果不是在jexus目录的时候,可以这样
- 启动:sudo /usr/jexus/jws start
- 停止:sudo /usr/jexus/jws stop
- 重启:sudo /usr/jexus/jws restart
- 重启指定网站:sudo /usr/jexus/jws restart siteName
- 停止指定网站:sudo /usr/jexus/jws stop siteName
如果进入了jexus目录可以直接这样:
- 启动:sudo ./jws start
- 重启:sudo ./jws restart
- 停止:sudo ./jws stop
- 启动某个网站: sudo start 网站名
- 重启某个网站:sudo restart 网站名
- 停止某个网站:sudo stop 网站名
创建网站
jexus的网站配置文件在路径: /usr/jexus/siteconf 下,siteconf中的每一个文件都是一个网站配置文件
安装jexus后,在/usr/jexus/siteocnf中,就已经有一个默认的网站配置文件,文件名叫“default”。
你可以修改这个配置文件,也可以将这个配置文件复制并修改为一个新站。
配置文件中,有关键的三项是必填项:
port:端口号定义
root:虚拟根路径和物理根路径的定义
hosts:域名定义
端口号(port)是一个整数,一般是80,也可以是65535以下的其它整数,但这个端口号必须没有其它服务程序占用。
根路径(root)由两部分组成,中间用空格分开。空格前表示这个网站访问时的虚拟根路径(一般都是“/”),空格后是存放这个网站内容的文件夹的物理路径(比如“/var/www/default”)。
这个 “/” 也可以写成 root=/cnblogs /var/www/default 但访问的时候必须是 192.168.1.1/cnblogs 或者www.abc.com/cnblogs
域名(hosts),填写访问这个网站的域名,如果有多个域名,域名间就英文逗号分开,同时还可以用“泛域名”,比如“*.mysite.com”。
网站名:jexus把网站配置文件的名称,作为网站名。
** 强调,网站配置文件名,不能有空格,第一个字符不能是“~”。
我们可以多创建几个网站,把siteconf下的default复制一份
切换到siteconf,执行命令: cp -b default myCore
修改root和hosts可以看到hosts绑定了3个域名,分别用 ","分割
创建root对应的文件下的网站 /var/www/myCore
至于内容,可以先用一个静态页面index.html
default网站默认不变:
重启Jexus(注意,所有的配置,在配置之后都需要重启Jexus)
然后在电脑绑定host
输入192.168.1.101访问的是默认的default站点
输入www.abc.com,www.cde.com,www.nsky.com访问的是myCore站点
说明jexus配置正确
jexus部署asp.net MVC
创建项目,新增jexus网站配置文件,以及上传这里就不说了
所有准备工作好了。只要简单的修改root和hosts
输入域名后出现了熟悉而传统的界面:
jexus部署asp.net core
centos7 安装net core 可以看:https://www.cnblogs.com/nsky/p/10381200.html
新建一个默认的mvc core项目,本地运行效果
发布:或者通过命令:dotnet publish -o f:\publish
不用跨平台命令发布centos7
dotnet pulish --r centos.7-x64 --c release
dotnet pulish --runtime centos.7-x64 --configuration release
其实在下面图片中的目标运行时也可以选择则,自己可以去尝试
这里:
部署模式选择:框架依赖,(不用选择独立发布:dotnet publish -c Release --self-contained)
目标运行时选择:可移植
发布后的文件:
上传到CentOS上后可以dotnet自宿主试下,可以排错,证明core程序是正常的
没问题后,这个程序可以关掉了
同样的添加配置文件,上传代码,修改配置文件:
针对于Net core程序,需要修改AppHost配置 参考:https://www.cnblogs.com/shanyou/p/6107248.html
- AppHost的配置格式是:
- AppHost={CmdLine=应用程序命令行; AppRoot=应用程序工作目录; Port=应用程序HTTP侦听端口},其中:
- “CmdLine”表示启动应用程序的命令行,如:dotnet /var/www/site1/app.dll;
- “AppRoot”表示应用程序工作目录,如:/var/www/site1;
- “Port”表示这个HTTP应用程序所使用的侦听端口,如:(Asp.Core默认端口是5000)。
没有通过UseUrls指定端口,那么默认就是5000,所以这里可以写0即可,这是jexus和net core约定好了的- 格式:AppHost={CmdLine=命行行; AppRoot=工作路径; Port=端口号}
说明:CmdLine:必选项。表示启动这个web应用程序的命令(含参数),如 CmdLine= dotnet /var/www/aspnetcore/AspNetCoreStarted.dll
AppRoot:必选项。表示这个应用程序的工作目录,如:AppRoot=/var/www/aspnetcore
Port:可选项。表示这个应用程序的侦听端口,多个端口用英文逗号分隔(注:如果没有填写这一项,就请在AppHost.port或reproxy中填写端口号,
否则,请求数据无法转发给应用程序)。
Env:可选参数。表示这个应用程序工作时需要的环境变量,如 env=(PATH=/usr/local/bin:/var/www/aspnetcore:$PATH),多个设置用英文逗号分开。
ErrLog:可选项。表示将这个应用程序的异常输出重定向到指定的文件(需填写完整路径),如果不原意输出日志,可以不用OutLog项。
这时, jexus会自动关掉控制台输出(实质是重定向到/dev/null中了);
OutLog:可选项。表示将这个应用程序的控制台输出重定向到指定的文件(需填写完整路径);
User: 可选项。以指定的用户身份运行该应用程序,默认为root身份。
注意:
1,AppHost像AppHost.Port一样,不支持虚拟路径;
2,AppHost功能是将指定的具有http服务能力的web应用程序纳入jexus工作进程进行管理,对Asp.Net Core或Node.js等自宿主web程序用于生产环境具有重要的意义。
- # Asp.Net Core应用程序所使用的端口号,如果在程序中使用了UsrUrls自定义端口则使用UsrUrls中填写的端口(不建议使用UsrUrls自定义端口),
在没有使用UsrUrls自定义端口的情况下端口号设置为 0,
Jexus会在运行时与Asp.Net Core进行"协商"具体使用的端口号,避免多个应用分配端口的麻烦和冲突的风险。
- 例如,比如我Asp.Net Core应用程序存放的路径在“/var/www/CoreDemo”,其启动程序存放在该文件夹中,名称是“core.dll”,程序启动后的侦听端口是5000,
那么,AppHost配置应为:
AppHost={CmdLine=dotnet /var/www/CoreDemo/core.dll;AppRoot=/var/www/CoreDemo;Port=0}- jexus反代,会把访问者的IP地址记录在HTTP头的 X-Forwarded-For 和 X-Real-IP 两个头域中
(后者只记录最近的一个IP,前者不但记录最后的IP,也会继承上一个代理服务器传过来的IP)
,所以,你从Request中,就能得到访问者 的IP地址。
配置好后重启jexus,还有就是发布了项目后,也需要重启jexus,如果AppHost.Port填写的是5000,那么对输入ip会跳转到
https://ip:5001,这个大家应该在本地是试过的,因为net core默认是支持https的,但jexus默认没有配置https所以会异常,
我这里AppHost.Port写成0,也不能用https访问,因为没有证书
http访问,提示不安全。但是能访问到的
通过F12查看当前程序的Server,确确实实是Jexus
换成https显然是不行的,具体怎么配置https:https://www.cnblogs.com/jjg0519/p/8572202.html
官方文档关于jexus配置https说明:https://www.linuxdot.net/bbsfile-2970
https://www.linuxdot.net/bbsfile-3125
- 第一步:登记SSL库。
- 首先查看“/lib”或“/usr/lib”等系统库文件夹中是否有SSL库文件的名字,该文件名应该是“libssl.so.版本号”(find / -name libssl.so.*),如果没有列出文件名,就证明你的系统还没有安装OpenSSL,请安装后再操作。
- (注:我的系统的SSL库文件名是:libssl.so.0.9.)
- 用VIM打开 “/usr/etc/mono/config”这个文件,在“<configuration>”节中,添加下面这一句:
- <dllmap dll="libssl" target="libssl.so.0.9.8" os="!windows" />
- (注意:dll的值一定要填“libssl”,target的值必须填你系统/lib文件夹中的ssl库文件名)
- 第二步:生成服务器端SSL证书和私钥。
- 具体操作方法参见有关APACHE的SSL证书生成方法
- 第三步:把证书和私钥文件名填写到JWS的配置文件中。
- 在Jexus文件夹中,打开 “jws.conf”,添加下面两句:
- CertificateFile=证书文件路径和文件名
- CertificateKeyFile=私钥文件路径和文件名
- 第四步:开启网站的HTTPS功能。
- 把网站服务端口改为443:
- port=
- 启用https:
- UseHttps=true
最终core的配置文件是:
这里CmdLine 可以简写: AppHost={CmdLine=dotnet core.dll;AppRoot=/var/www/CoreDemo;Port=}
因为root已经指定了全路径
设置jexus开机自动启动
如果服务器重启,必须手动启动jexus,所以应该创建一个服务,通过服务启动jexus
1.新建 jexus.service
- cd /lib/systemd/system
- vim jexus.service
添加如下命令并保存
- [Unit]
- Description=jexus
- After=network.target
- [Service]
- Type=forking
- ExecStart=/usr/jexus/jws start
- ExecReload=/usr/jexus/jws restart
- ExecStop=/usr/jexus/jws stop
- PrivateTmp=true
- [Install]
- WantedBy=multi-user.target
执行命令,加入服务: systemctl enable jexus.service
启动服务: systemctl start jexus.service
查看服务状态: systemctl status jexus.service
重启测试:输入命令: rebootCentOS会重启,然后再次看服务状态,是否启动,输入ip能否访问成功,都成功的话,说明开机启动成功
jexus配置方法两种
1:端口转发,从5.8.2开始支持,上面配置的AppHost就是端口转发
2:反向代理:reproxy模块,使用代理就能实现负载均衡
端口转发的原理:收集于网络
关于端口转发模式下获取访问者IP地址的问题,目前5.8.1还不支持,从5.8.2开始,可以从请求的Http头中的“X-Real-IP”获取对方IP地址。
参考:https://www.cnblogs.com/stulzq/p/7344129.html
- /// <summary>
- /// Jexus Server Middleware
- /// </summary>
- public class JexusMiddleware
- {
- readonly RequestDelegate _next;
- public JexusMiddleware(RequestDelegate next, ILoggerFactory loggerFactory, IOptions<IISOptions> options)
- {
- _next = next;
- }
- public async Task Invoke(HttpContext httpContext)
- {
- var headers = httpContext.Request.Headers;
- try
- {
- if (headers != null && headers.ContainsKey("X-Original-For"))
- {
- var ipaddAdndPort = headers["X-Original-For"].ToArray()[];
- var dot = ipaddAdndPort.IndexOf(":", StringComparison.Ordinal);
- var ip = ipaddAdndPort;
- var port = ;
- if (dot > )
- {
- ip = ipaddAdndPort.Substring(, dot);
- port = int.Parse(ipaddAdndPort.Substring(dot + ));
- }
- httpContext.Connection.RemoteIpAddress = System.Net.IPAddress.Parse(ip);
- if (port != ) httpContext.Connection.RemotePort = port;
- }
- }
- finally
- {
- await _next(httpContext);
- }
- }
- }
- /// <summary>
- /// Extensions
- /// </summary>
- public static class WebHostBuilder
- {
- /// <summary>
- /// 启用JexusIntegration中间件
- /// </summary>
- /// <param name="builder"></param>
- /// <returns></returns>
- public static IWebHostBuilder UseJexusIntegration(this IWebHostBuilder builder)
- {
- if (builder == null)
- {
- throw new ArgumentNullException(nameof(builder));
- }
- // 检查是否已经加载过了
- if (builder.GetSetting(nameof(UseJexusIntegration)) != null)
- {
- return builder;
- }
- // 设置已加载标记,防止重复加载
- builder.UseSetting(nameof(UseJexusIntegration), true.ToString());
- // 添加configure处理
- builder.ConfigureServices(services =>
- {
- services.AddSingleton<IStartupFilter>(new JwsSetupFilter());
- });
- return builder;
- }
- }
- class JwsSetupFilter : IStartupFilter
- {
- public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next)
- {
- return app =>
- {
- app.UseMiddleware<JexusMiddleware>();
- next(app);
- };
- }
- }
- //使用:
- WebHost.CreateDefaultBuilder(args)
- .UseStartup<Startup>()
- .UseJexusIntegration();
一,关于负载均衡:
用jexus的reproxy(反向代理)功能,就能实现负载均衡。例如,你有三台服务器,其中一台IP地址是 1.1.1.1是负载均衡服务器,用于对外服务,对内分发工作负载,另外两台是工作服务器,IP地址分别为 2.2.2.1、2.2.2.2,工作端口是8088。那么,你在 1.1.1.1这台服务器上安装上jexus,并在网站配置文件上作如下配置就行:
reproxy=/ 2.2.2.1:8088, 2.2.2.2:8088
利用Jexus的“多目标反向代理”功能,我们很容易实现多服务器的负载均衡,构成一个WEB服务器集群,大大提高网站的负载能力。 Jexus反向代理有一个特点:如果前端服务器本地网站中有内容,它就会直接使用前端服务器的本地内容,而不会将请求发送给后端服务器。
据我们所知,对于网站,一个ASPX网页上常常会含有图片、JS、CSS等大量的静态文件,其比例甚至可以达到一比三十或更多,因此,如果你希望为静态文件提供更快的反应速度,你只需要把静态文件放到前端服务器对应网站的对应文件夹下就行。
Jexus的反代很灵活,既可以以文件夹为单位对某个单一目标进行反代,也可以整站反代,关键是看你怎么设置。
比如:如果目标网站是: http://a.b.com/
那么,你就可以设: reproxy=/ http://a.b.com/
这就是整站。甚至还可以把一个整站作为你的一个虚拟路径:
如: reproxy=/blog/ http://blog.xy.com/
二,关于Session同步:
同步的方法很多,对于asp.net而言,你可以将两台工作服务器的session配置成同一台state server上,比如上例中,你可以把1.1.1.1作公用的state server;另外还有一个更省力的方法,是利用jexus反向代理的Index关键字,把相同IP地址的请求转发到同一台服务器上,这时配置如下:
reproxy=/ 2.2.2.1:8088, 2.2.2.2:8088 |Index=ip
默认情况下,Jexus web server是以单进程模式运行的,当修改jws.config配置文件,把httpd.processes的值设置为大于1的数字时,JWS就会按指定的数量以多进程的方式并行工作。
Jexus多进程并行工作,可以更充分地利用多CPU的性能优势,提高大并发负载能力和处理速度,同时,多进程并行,也是高可用性服务的必然需求。
详情: https://www.linuxdot.net/bbsfile-3301
多进程时,需要特别注意如下两个方面:
1、
不要将Session保存在进程内,即web.config中的sessionState不能配置为Inproc,应该使用同一台
Session state服务器对session信息进行保存。如:可以配置为
“<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" timeout="20" /&
gt;”。
2、需要配置machineKey。Jexus多进程并行时,相于当多主机群集工作,因此,必须在Web.Config文件中
配置machineKey。如果没有这个设置,网站就会出现诸如数据“无法验证的错误”之类的问题。下面是一个machineKey的参考配置:
<machineKey validationKey="3FF1E929BC0534950B0920A7B59FA698BD02DFE8" decryptionKey="280450BB36319B474C996B506A95AEDF9B51211B1D2B7A77" decryption="3DES" validation="SHA1"/>
注:Jexus自带State服务,如果没有其它需求,一般不需要再配置配置其它的状态服务器。
注意:
多台服务器同时为同一个网站提供服务,存在着一个session同步的部题。在Jexus上同步session很方便:你只需要把每个网站的State服务器IP地址指向同一台服务器IP地址就行。具体方法是,修改网站的web.config,在system.web节中加入:
<sessionState mode="StateServer" stateConnectionString="tcpip=x.x.x.x:42424" timeout="60" />
Jexus对State服务器的控制能力比较强,一旦State服务器的服务程序崩溃退出,Jws就会在10秒之内自动重启它,所以,就机制而言,其稳定性是很高的,一般不会出现问题
CentOS上的网站是这个
然后我在本地部署一个网站作为工作服务器
现在我在工作服务器访问CentOS让jexus又代理回,调用我的工作服务器的站点
注意:端口转发和代理只能用一个,所以这里先注释掉端口转发,配置代理
为了测试负载,所以我配置了2个域名,我特意找的这个是没有https的。
要不然代理过去跳转到了htts,没有证书访问不了
本来想在本地多部署几个,但centos要开通端口才能访问
- reproxy=/ 192.168.1.102,www.xinhuanet.com
配置好后,重启jexus,然后多刷新几次,就会在我配置的这两个域名之间切换,达到负载的目的了
可以看到ip地址没有变的,但显示的内容变了,一个是我本地的Demo,一个是新华网,当然我这里只是测试,正式环境肯定都是同一个网站
关于验证码
windows是可以获取自定义字体的,比如IIS服务器没有字体,可以把字体放到项目中,然后代码加载即可
但在Linxu是不行的,必须安装。
在/usr/share/fonts创建一个文件夹,比如:myfonts 在windos中把需要的在字体拷贝到该文件夹下(不一定是这个目录。只是便于管理,统一放在fonts文件夹下)
cd进入该目录。执行命令:
- fc-cache -fv
如果提示:-bash: fc-cache: command not found
则yum安装即可:yum install fontconfig
安装完成,刷新网站即成功
参考:https://javawind.net/p130?date=2013-7-1
https://www.cnblogs.com/24la/p/linuxcsharp-validcode-show.html
jexus多网站配置
其实跟着上面下来,已经配置了多个网站,除了core网站是IP其他3个都指定了hosts,可以看到有4个网站配置文件
我本地也通过host绑定了域名,测试也都成功了。这里就不截图演示了
Jexus 更新步骤
1,停止jws,并把 /usr/jexus 这个旧的文件夹更名备份
2,以 root 身份用下边这个命令新装jexus(如不是root登录,可以用 sudo -s 命令切换成root身份):
独立版安装命令:curl https://jexus.org/release/x64/install.sh|sh
通用版安装命令:curl https://jexus.org/release/install | sh
3,从备份的jexus文件夹的siteconf文件夹中把过去的配置文件复制到/usr/jexus的对应文件夹中;
4,把其它自己添加的东西,比如证书之类的从备份文件夹复制到对应位置;
5,试运行,正常后,把备份文件夹删除。
其实就三步:
更名备份
重新安装
恢复配置
其实jexus远远不止我列出的这点,还有很多东西需要研究,暂时就不写了
最后把CoreDemo的配置文件放出来,供大家参考
- ######################
- # Web Site: CoreDemo
- ########################################
- port=
- #root=/ /var/www/myCore
- root=/ /var/www/CoreDemo
- hosts=* #OR your.com,*.your.com
- #hosts=www.core.com
- # addr=0.0.0.0
- #本选项默认是true,即需要检查,除非你的确需要关掉这个选项,
- #否则可以不填,格式如下:(关掉本项可以提高服务器速度,但就安全而言,不建议关掉它)
- # CheckQuery=false
- NoLog=true
- # AppHost={CmdLine=/usr/local/x/xx;AppRoot=/usr/local/x;Port=}
- #AppHost={
- # CmdLine=dotnet /var/www/CoreDemo/core.dll;
- # AppRoot=/var/www/CoreDemo;
- # Port=;
- # OutLog=/tmp/out.txt;
- # Error=/tmp/err.txt;
- #env=(PATH=/usr/local/bin:/var/www/aspnetcore:$PATH);
- }
- #AppHost={CmdLine=dotnet core.dll;AppRoot=/var/www/CoreDemo;Port=}
- #AppHost={CmdLine=/var/www/CoreDemo/core;AppRoot=/var/www/CoreDemo;Port=}
- #AppHost={Cmd=dotnet Domo.dll;AppRoot=/var/www/CoreDemo;Port=}
- # NoFile=/index.aspx
- # Keep_Alive=false
- # UseGZIP=false
- # UseHttps=true
- #SSL证书路径(如果需要使用https协议才填)
- # ssl.certificate=/x/xxx.crt #or pem
- #SSL密钥文件路径(如果需要使用https协议才填)
- # ssl.certificatekey=/x/xxx.key
- # ssl.protocol=TLSv1. # TLSv1. or TLSv1....
- # ssl.ciphers=
- #禁止某IP或IP段访问本网站
- # DenyFrom=192.168.0.233, 192.168..*, 192.168.2.0/
- # AllowFrom=192.168.*.*
- #禁止访问某文件夹及其子文件夹中的内容,多个路径,用英文逗号分开
- # DenyDirs=~/cgi, ~/upfiles
- # indexes=myindex.aspx
- # Deny php,asp...
- rewrite=^/.+?\.(asp|php|cgi|pl|sh|bash|dll)(\?.*|)$ /.deny->$
- rewrite=.*/editor/.+ /.deny->editor
- # reproxy=/bbs/ http://192.168.1.112/bbs/
- reproxy=/ 192.168.1.102,www.xinhuanet.com
- # host.Redirect=abc.com www.abc.com
- # ResponseHandler.Add=myKey:myValue
- # Jexus php fastcgi address is '/var/run/jexus/phpsvr'
- #######################################################
- # fastcgi.add=php|socket:/var/run/jexus/phpsvr
- # php-fpm listen address is '127.0.0.1:9000'
- ############################################
- # fastcgi.add=php|tcp:127.0.0.1:
官网论坛配置说明:https://www.linuxdot.net/bbsfile-3084
收集一些jexus配置
- https://www.cnblogs.com/ruiy/p/6089874.html
- 下面以www.mysite.cn为例,说说网站的配置
- 在网站配置文件夹中建立一个文件,这个文件的名称应该有一些意义(至少要能让服务器管理员了解这个配置文件是属于哪一个网站的)
- 设这个网站的配置文件的文件名为:mysite
- sudo miv mysite
- A、网站配置的基本内容:
- port= # jexus WEB服务器侦听端口(必填。当然可以是其它端口)
- root=/ /var/www/mysite # 网站URL根路径(虚拟目录)和对应的物理路径,两个路径字串之间必须用空格分开(必填。既使这个网站是一个纯粹的反向代理站,也得填)
- #可选项
- hosts=mysite.cn,www.mysite.cn # 网站域名(建议填写),可以用泛域名,比如:*.mysite.cn(不填此项或只填一个“*”号表示这是默认网站,一个端口只能有一个默认站)
- indexs=index.aspx,index.htm # 首页文件名,可以写多个,用英文逗号分开(可以不填。因为JWS系统含有常用首页名)
- aspnet_exts=mspx,ttt # 添加新出现的或自定义的ASP.NET扩展名(不建议填。多个扩展名用英文逗号分开,不加点号。系统含有常用扩展名)
- B、最简配置示例
- port=
- root=/ /var/www/default
- C、网站配置的高级选项
- 网站配置的高级选项全是可选项,应该根据网站的实际需要选填。
- 灵活使用高级选项,可以架设出一台与众不同的、功能强大的服务器平台或者服务器群组。
- 、使用“URL重写”功能
- URL重写是指WEB服务器将访问者的请求URL路径资源按指定的匹配规则解释和匹配为另外的一个真实RUL路径资源。
- 比如,希望别人访问“.php”类型的文件时,服务器返回 /.html 这个文件:
- rewrite=^/.+?\.(asp|php|cgi)$ /.html
- # 格式:
- # “rewrite=”的后面是两部分阻成,两部分之间由一个空格分开。
- 空格前是匹配的条件:用正则表达式描述URL的匹配条件。
- 空格后是匹配的目标:指的是如果用户访问的路径合乎前面的匹配条件,服务器将以哪个规则回应。
- 又如:
- 把“/bbs”解析为“/bbs/index.aspx”,把“/bbs/file-” 匹配为 “/bbs/show.aspx?id=”:
- rewrite=^/bbs$ /bbs/index.aspx
- rewrite=^/bbs/file-([-]{,})$ /bbs/show.aspx?id=$
- 格式解释:rewrite的等号后含有两部分内容,用空隔分开。前半部分是一个正则表达式,用于描述需要URL重写的(用户浏览器中的)url路径样式,后半部分是当用户的URL合乎前面的正则表达式时,JWS应该重写和访问的真实URL路径。
- 、禁止某IP或IP段访问本网站
- denyfrom=111.222..*
- denyfrom=101.202..*
- denyfrom=101.201.1.132
- 、禁止访问某文件夹及其子文件夹中的内容
- DenyDirs=网站文件夹路径的URL路径,如 “/abcfiles”或 “~/abcfiles”,多个路径,用英文逗号分开
- 、是否对请求的URL等进行安全检测
- 本选项默认是true,即需要检查,除非你的确需要关掉这个选项,否则可以不填,格式如下:
- checkquery=false
- (关掉本项可以提高服务器速度,但就安全而言,不建议关掉它)
- 、NOFILE(无文件)功能
- nofile=/mvc/controller.aspx
- (注:这是Jexus特有的功能,指的是如果服务器不存在用户要访问的文件,服务器将使用什么文件应答。)
- (提示:路由后,原RUL路径会存贮在Jexus特有一个服务器变量“X-Real-Uri”中)
- (技巧:用这个功能,或者再加上URL Rewrite功能,你完全可以把URL路径与真实路径隔离开来,达到信息隐藏和简化URL的作用。)
- 、NOLOG(无日志)功能
- nolog=yes
- (注:禁用网站日志功能会提高WEB服务器系统的的处理速度,但不足也是明显的,就是你无法详细了解网站的访问情况了)
- 、长连接开关
- keep_alive=true
- 注:V5.1版默认值是true,即默认使用长连接,可以不填。
- 、反向代理功能
- reproxy= /abc/ http://www.xxxx.com:890/abc/
- 参数的值由本站RUL根路径和目标网站URL根路径两部分组成,之间用空隔分开。
- *技巧:反向代量的目标地址可以有多个,用英文逗号分隔,如:
- reproxy=/abc/ http://192.168.0.3/abc/,http://192.168.0.4/abc/
- 这时,当用户访问/abc/时,jexus就会随机选择一台服务器进行访问,达到负载均衡或服务器集群的效果。
- 、接受FAST-CGI提供的服务
- 对于TCP连接:
- fastcgi.add=需要fast-cgi处理的文件扩展名|tcp:fast-cgi服务的IP地址:端口
- 如:fastcgi.add=php,php3|tcp:127.0.0.1:
- 对于unix sockets:
- fastcgi.add=需要fcgi处理的文件扩展名|socket:路径
- 如:fastcgi.add=php,php3|socket:/tmp/phpsvr
- 、启用gzip压缩功能
- usegzip=true #即UseGzip
- 解释:启用这个功能后,当用户访问“.htm”“.js”等文件时,Jexus会将这些文件进行GZIP压缩后发送给用户浏览器,这样,可以节约更多的网络带宽。
- 、启用HTTPS进行SSL安全传输
- 本功能是对服务器与客户之间的数据进行加密传送,提供数据的保密性。具体方法请访问www.linuxdot.net的专题讲解。
- 七、Jexus操作:
- 、基本的启动命令的格式(仅作例子,不建议使用)
- mono /usr/jexus/jws.exe
- 如:mono /usr/jexus/jws.exe
- 这个命令运行后,用 Ctrl+c 组合键退出程序
- 、以“服务”方式进行后台运行, 只需要基本命令后加一空格再加一“&”号(仅作例子,不建议使用)
- mono /usr/jexus/jws.exe &
- 、开机自动启动:
- 在/etc/rc.local 或类试的开机启动脚本中加入下面这一行命令:
- mono /usr/jexus/jws.exe >/dev/null >& &
- 或者
- /usr/jexus/jws.start #推荐方式
- (注意:不同的Linux系统可能有不同的启动方式,用户应根据不同系统的特点灵活定制)
- (提示:jws.start是脚本文件,用户可以根据自己系统的特点去适当修改它,以便其启动)
- 、使用脚本操作Jexus(推荐使用):
- Jexus自带了三个脚本,分别是:jws.start、jws.restart、jws.stop。
- 功能1,对Jexus服务器操作:
- jws.start #启动JEXUS服务,可以写入rc.local文件中,从而达到开机自启动的目的;
- jws.stop #停止Jexus的运行。
- jws.restart #重启Jexus;
- 功能2,对某个指定的网站操作:
- jws.restart 网站名 #加载/启动/重启一个指定的网站
- jws.stop 网站名 #停止一个指定的网站
- 注意,这些脚本需要具有可执行权限,同时操作者也必须拥有管理员(root)权限。
- 八、卸载:
- 、在rc.local文件中删除你手工添加的开机自动启动Jexus的命令行(如果本来就没有添加过,这步操作就不必做了)
- 、删除jexus文件夹及全部内容(建议只删除*.exe和*.dll,其它的,比如网站配置文件等不必删除,以便将来重新启用)。
学习过程中也参照了很多大神们写的文章
张善友:
http://www.cnblogs.com/shanyou/p/jexus582.html
https://www.cnblogs.com/shanyou/p/6107248.html
https://www.cnblogs.com/shanyou/p/5518152.html
https://www.cnblogs.com/shanyou/p/5518152.html
http://www.cnblogs.com/staneee/p/6852559.html
https://www.cnblogs.com/stulzq/p/7324616.html
https://www.cnblogs.com/jackytang/p/9111902.html
高级配置:
https://www.cnblogs.com/msdynax/p/3735344.html
https://www.cnblogs.com/savorboard/p/dot-net-linux-jexus.html
https://www.cnblogs.com/shanyou/p/6107248.html
配置https服务:https://www.cnblogs.com/CKExp/p/8469831.html#3911195
Centos7安装jexus,部署asp.net core,asp.net mvc的更多相关文章
- ASP.Net Core 2.2 MVC入门到基本使用系列 (一)
本教程会对基本的.Net Core 进行一个大概的且不会太深入的讲解, 在您看完本系列之后, 能基本甚至熟练的使用.Net Core进行Web开发, 感受到.Net Core的魅力. 本教程知识点大体 ...
- ASP.Net Core 2.2 MVC入门到基本使用系列 (二)
本教程会对基本的.Net Core 进行一个大概的且不会太深入的讲解, 在您看完本系列之后, 能基本甚至熟练的使用.Net Core进行Web开发, 感受到.Net Core的魅力. 本教程知识点大体 ...
- ASP.Net Core 2.2 MVC入门到基本使用系列 (三)
本教程会对基本的.Net Core 进行一个大概的且不会太深入的讲解, 在您看完本系列之后, 能基本甚至熟练的使用.Net Core进行Web开发, 感受到.Net Core的魅力. 本教程知识点大体 ...
- ASP.Net Core 2.2 MVC入门到基本使用系列 (四)
本教程会对基本的.Net Core 进行一个大概的且不会太深入的讲解, 在您看完本系列之后, 能基本甚至熟练的使用.Net Core进行Web开发, 感受到.Net Core的魅力. 本教程知识点大体 ...
- ASP.NET CORE 1.0 MVC API 文档用 SWASHBUCKLE SWAGGER实现
from:https://damienbod.com/2015/12/13/asp-net-5-mvc-6-api-documentation-using-swagger/ 代码生成工具: https ...
- ASP.NET Core 2.0 MVC项目实战
一.前言 毕业后入职现在的公司快有一个月了,公司主要的产品用的是C/S架构,再加上自己现在还在学习维护很老的delphi项目,还是有很多不情愿的.之前实习时主要是做.NET的B/S架构的项目,主要还是 ...
- asp.net core 3.0 MVC JSON 全局配置
asp.net core 3.0 MVC JSON 全局配置 System.Text.Json(default) startup配置代码如下: using System.Text.Encodings. ...
- ASP.NET Core 2.0 MVC 发布部署--------- CentOS7 X64 具体操作
.Net Core 部署到 CentOS7 64 位系统中的步骤 1.安装工具 1.apache 2..Net Core(dotnet-sdk-2.0) 3.Supervisor(进程管理工具,目的是 ...
- ASP.NET Core 2.0 MVC 发布部署--------- ASP.NET Core 发布的具体操作
ASP.NET Core 发布的具体操作 下面使用C# 编写的ASP.NET Core Web项目示例说明发布的全过程. 1.创建项目 选择“文件” > “新建” > “项目”. 在“添加 ...
随机推荐
- Datatables插件1.10.15版本服务器处理模式ajax获取分页数据实例解析
一.问题描述 前端需要使用表格来展示数据,找了一些插件,最后确定使用dataTables组件来做. 后端的分页接口已经写好了,不能修改.接口需要传入页码(pageNumber)和页面显示数据条数(pa ...
- numpy array分割-【老鱼学numpy】
有合并,就有分割. 本节主要讲述如何通过numpy对数组进行横向/纵向分割. 横向/纵向分割数组 首先创建一个6行4列的数组,然后我们对此数组按照横向进行切割,分成3块,这样每块应该有2行,见例子: ...
- 一步步建立 Vue + Cesium 初始化项目
一步步建立 Vue + Cesium 初始化项目 初始化 Vue 项目 升级 npm npm install -g npm 安装 @vue/cli 和 @vue/cli-service-global ...
- Python_queue单项队列
队列(queue),实现程序间的松耦合 队列的三种类: class queue.Queue(maxsize)# 先进先出, maxsize 指定队列长度,线程安全的清况下,可以放入实例,对实例进行传输 ...
- Python学习(三十六)—— Cookie、Session和自定义分页
一.Django中操作Cookie 获取Cookie request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR ...
- P1991 无线通讯网 最小生成树
题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫星电话线路的哨所(两边都 ...
- 网络编程-Python高级语法-深浅拷贝
知识点:深浅拷贝,浅拷贝拷贝的是最顶层的东西,深拷贝是拷贝最深层的东西,光说可能理解不了,看下图 1.拷贝可变类型 2.拷贝不可变类型 3.拷贝元祖,元组内数据是可变类型
- 动态sql与静态sql的区别
首先,所谓SQL的动态和静态,是指SQL语句在何时被编译和执行,二者都是用在SQL嵌入式编程中的,这里所说的嵌入式是指将SQL语句嵌入在高级语言中,而不是针对于单片机的那种嵌入式编程. 静态SQL,在 ...
- win10,vs2017+mpi v10.0 安装与入门 (详细)
一.安装visual studio 2017 下载 地址:https://visualstudio.microsoft.com/zh-hans/vs/ 安装 我们再选择自己想要安装的东西,确认好后点 ...
- Lock锁方式解决线程安全问题
在JDK5.0之后新增加了一种更强大的线程同步机制---通过显示定义同步锁来实现线程同步解决线程安全问题.同步锁使用Lock对象充当. java.util.concurrent.locks.lock接 ...