官網解釋:https://www.jexus.org/php
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中了html
但該版本只支持64位Linux操做系統,我安裝的centos7系統恰好知足要求前端
輸入命令: uname -r java
這裏的.x86_64跟x86是有區別的,.x86_64實際上是32位像64位的一個過渡linux
具體:https://www.cnblogs.com/Totems/p/3198287.htmlweb
安裝jexus獨立版的命令是:注:運行安裝命令,須要操做者有root權限。正則表達式
curl https://jexus.org/release/x64/install.sh|sudo sh vim
輸入命令回車:能夠看到他會去下載文件:https://linuxdot.net/down/jexus-5.8.3-x64.tar.gz
windows
下載完成並保存後,就會執行一系列的解壓操做,能夠看到壓縮包裏面包含mono,因此不用單獨安裝了後端
最後提示操做ok
切換到jexus,從上面標記的圖片中能夠看到jexus路徑在: /usr/jexus
而後啓動: sudo ./jws start
若是訪問不成功,判斷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網站配置文件,以及上傳這裏就不說了
全部準備工做好了。只要簡單的修改root和hosts
輸入域名後出現了熟悉而傳統的界面:
centos7 安裝net core 能夠看:http://www.javashuo.com/article/p-cwesmxjg-ez.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應用程序所使用的偵聽端口,如:5000(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.8) 用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=443 啓用https: UseHttps=true
最終core的配置文件是:
這裏CmdLine 能夠簡寫: AppHost={CmdLine=dotnet core.dll;AppRoot=/var/www/CoreDemo;Port=0}
由於root已經指定了全路徑
若是服務器重啓,必須手動啓動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可否訪問成功,都成功的話,說明開機啓動成功
1:端口轉發,從5.8.2開始支持,上面配置的AppHost就是端口轉發
2:反向代理:reproxy模塊,使用代理就能實現負載均衡
端口轉發的原理:收集於網絡
關於端口轉發模式下獲取訪問者IP地址的問題,目前5.8.1還不支持,從5.8.2開始,能夠從請求的Http頭中的「X-Real-IP」獲取對方IP地址。
參考:http://www.javashuo.com/article/p-keveoewf-en.html
1 /// <summary> 2 /// Jexus Server Middleware 3 /// </summary> 4 public class JexusMiddleware 5 { 6 readonly RequestDelegate _next; 7 public JexusMiddleware(RequestDelegate next, ILoggerFactory loggerFactory, IOptions<IISOptions> options) 8 { 9 _next = next; 10 } 11 12 public async Task Invoke(HttpContext httpContext) 13 { 14 var headers = httpContext.Request.Headers; 15 16 try 17 { 18 if (headers != null && headers.ContainsKey("X-Original-For")) 19 { 20 var ipaddAdndPort = headers["X-Original-For"].ToArray()[0]; 21 var dot = ipaddAdndPort.IndexOf(":", StringComparison.Ordinal); 22 var ip = ipaddAdndPort; 23 var port = 0; 24 if (dot > 0) 25 { 26 ip = ipaddAdndPort.Substring(0, dot); 27 port = int.Parse(ipaddAdndPort.Substring(dot + 1)); 28 } 29 30 httpContext.Connection.RemoteIpAddress = System.Net.IPAddress.Parse(ip); 31 if (port != 0) httpContext.Connection.RemotePort = port; 32 } 33 } 34 finally 35 { 36 await _next(httpContext); 37 } 38 } 39 } 40 41 /// <summary> 42 /// Extensions 43 /// </summary> 44 public static class WebHostBuilder 45 { 46 /// <summary> 47 /// 啓用JexusIntegration中間件 48 /// </summary> 49 /// <param name="builder"></param> 50 /// <returns></returns> 51 public static IWebHostBuilder UseJexusIntegration(this IWebHostBuilder builder) 52 { 53 if (builder == null) 54 { 55 throw new ArgumentNullException(nameof(builder)); 56 } 57 58 // 檢查是否已經加載過了 59 if (builder.GetSetting(nameof(UseJexusIntegration)) != null) 60 { 61 return builder; 62 } 63 64 // 設置已加載標記,防止重複加載 65 builder.UseSetting(nameof(UseJexusIntegration), true.ToString()); 66 67 // 添加configure處理 68 builder.ConfigureServices(services => 69 { 70 services.AddSingleton<IStartupFilter>(new JwsSetupFilter()); 71 }); 72 73 return builder; 74 } 75 } 76 77 class JwsSetupFilter : IStartupFilter 78 { 79 public Action<IApplicationBuilder> Configure(Action<IApplicationBuilder> next) 80 { 81 return app => 82 { 83 app.UseMiddleware<JexusMiddleware>(); 84 next(app); 85 }; 86 } 87 } 88 89 90 //使用: 91 WebHost.CreateDefaultBuilder(args) 92 .UseStartup<Startup>() 93 .UseJexusIntegration();
一,關於負載均衡:
用jexus的reproxy(反向代理)功能,就能實現負載均衡。例如,你有三臺服務器,其中一臺IP地址是 1.1.1.1是負載均衡服務器,用於對外服務,對內分發工做負載,另外兩臺是工做服務器,IP地址分別爲 2.2.2.一、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
多進程時,須要特別注意以下兩個方面:
一、 不要將Session保存在進程內,即web.config中的sessionState不能配置爲Inproc,應該使用同一臺 Session state服務器對session信息進行保存。如:能夠配置爲 「<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" timeout="20" /& gt;」。
二、須要配置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
其實跟着上面下來,已經配置了多個網站,除了core網站是IP其餘3個都指定了hosts,能夠看到有4個網站配置文件
我本地也經過host綁定了域名,測試也都成功了。這裏就不截圖演示了
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=80 #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=5000} #AppHost={ # CmdLine=dotnet /var/www/CoreDemo/core.dll; # AppRoot=/var/www/CoreDemo; # Port=0; # 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=0} #AppHost={CmdLine=/var/www/CoreDemo/core;AppRoot=/var/www/CoreDemo;Port=0} #AppHost={Cmd=dotnet Domo.dll;AppRoot=/var/www/CoreDemo;Port=5000} # 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.0 # TLSv1.1 or TLSv1.2... # ssl.ciphers= #禁止某IP或IP段訪問本網站 # DenyFrom=192.168.0.233, 192.168.1.*, 192.168.2.0/24 # AllowFrom=192.168.*.* #禁止訪問某文件夾及其子文件夾中的內容,多個路徑,用英文逗號分開 # DenyDirs=~/cgi, ~/upfiles # indexes=myindex.aspx # Deny php,asp... rewrite=^/.+?\.(asp|php|cgi|pl|sh|bash|dll)(\?.*|)$ /.deny->$1 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 301 # 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:9000
官網論壇配置說明:https://www.linuxdot.net/bbsfile-3084
收集一些jexus配置
https://www.cnblogs.com/ruiy/p/6089874.html 下面以www.mysite.cn爲例,說說網站的配置 在網站配置文件夾中創建一個文件,這個文件的名稱應該有一些意義(至少要能讓服務器管理員瞭解這個配置文件是屬於哪個網站的) 設這個網站的配置文件的文件名爲:mysite sudo miv mysite A、網站配置的基本內容: port=80 # 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=80 root=/ /var/www/default C、網站配置的高級選項 網站配置的高級選項全是可選項,應該根據網站的實際須要選填。 靈活使用高級選項,能夠架設出一臺不同凡響的、功能強大的服務器平臺或者服務器羣組。 1、使用「URL重寫」功能 URL重寫是指WEB服務器將訪問者的請求URL路徑資源按指定的匹配規則解釋和匹配爲另外的一個真實RUL路徑資源。 好比,但願別人訪問「.php」類型的文件時,服務器返回 /404.html 這個文件: rewrite=^/.+?\.(asp|php|cgi)$ /404.html # 格式: # 「rewrite=」的後面是兩部分阻成,兩部分之間由一個空格分開。 空格前是匹配的條件:用正則表達式描述URL的匹配條件。 空格後是匹配的目標:指的是若是用戶訪問的路徑合乎前面的匹配條件,服務器將以哪一個規則迴應。 又如: 把「/bbs」解析爲「/bbs/index.aspx」,把「/bbs/file-1」 匹配爲 「/bbs/show.aspx?id=1」: rewrite=^/bbs$ /bbs/index.aspx rewrite=^/bbs/file-([0-9]{1,6})$ /bbs/show.aspx?id=$1 格式解釋:rewrite的等號後含有兩部份內容,用空隔分開。前半部分是一個正則表達式,用於描述須要URL重寫的(用戶瀏覽器中的)url路徑樣式,後半部分是當用戶的URL合乎前面的正則表達式時,JWS應該重寫和訪問的真實URL路徑。 2、禁止某IP或IP段訪問本網站 denyfrom=111.222.111.* denyfrom=101.202.111.* denyfrom=101.201.1.132 3、禁止訪問某文件夾及其子文件夾中的內容 DenyDirs=網站文件夾路徑的URL路徑,如 「/abcfiles」或 「~/abcfiles」,多個路徑,用英文逗號分開 4、是否對請求的URL等進行安全檢測 本選項默認是true,即須要檢查,除非你的確須要關掉這個選項,不然能夠不填,格式以下: checkquery=false (關掉本項能夠提升服務器速度,但就安全而言,不建議關掉它) 5、NOFILE(無文件)功能 nofile=/mvc/controller.aspx (注:這是Jexus特有的功能,指的是若是服務器不存在用戶要訪問的文件,服務器將使用什麼文件應答。) (提示:路由後,原RUL路徑會存貯在Jexus特有一個服務器變量「X-Real-Uri」中) (技巧:用這個功能,或者再加上URL Rewrite功能,你徹底能夠把URL路徑與真實路徑隔離開來,達到信息隱藏和簡化URL的做用。) 6、NOLOG(無日誌)功能 nolog=yes (注:禁用網站日誌功能會提升WEB服務器系統的的處理速度,但不足也是明顯的,就是你沒法詳細瞭解網站的訪問狀況了) 7、長鏈接開關 keep_alive=true 注:V5.1版默認值是true,即默認使用長鏈接,能夠不填。 8、反向代理功能 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就會隨機選擇一臺服務器進行訪問,達到負載均衡或服務器集羣的效果。 9、接受FAST-CGI提供的服務 對於TCP鏈接: fastcgi.add=須要fast-cgi處理的文件擴展名|tcp:fast-cgi服務的IP地址:端口 如:fastcgi.add=php,php3|tcp:127.0.0.1:9000 對於unix sockets: fastcgi.add=須要fcgi處理的文件擴展名|socket:路徑 如:fastcgi.add=php,php3|socket:/tmp/phpsvr 10、啓用gzip壓縮功能 usegzip=true #即UseGzip 解釋:啓用這個功能後,當用戶訪問「.htm」「.js」等文件時,Jexus會將這些文件進行GZIP壓縮後發送給用戶瀏覽器,這樣,能夠節約更多的網絡帶寬。 11、啓用HTTPS進行SSL安全傳輸 本功能是對服務器與客戶之間的數據進行加密傳送,提供數據的保密性。具體方法請訪問www.linuxdot.net的專題講解。 7、Jexus操做: 1、基本的啓動命令的格式(僅做例子,不建議使用) mono /usr/jexus/jws.exe 如:mono /usr/jexus/jws.exe 這個命令運行後,用 Ctrl+c 組合鍵退出程序 2、以「服務」方式進行後臺運行, 只須要基本命令後加一空格再加一「&」號(僅做例子,不建議使用) mono /usr/jexus/jws.exe & 3、開機自動啓動: 在/etc/rc.local 或類試的開機啓動腳本中加入下面這一行命令: mono /usr/jexus/jws.exe >/dev/null 2>&1 & 或者 /usr/jexus/jws.start #推薦方式 (注意:不一樣的Linux系統可能有不一樣的啓動方式,用戶應根據不一樣系統的特色靈活定製) (提示:jws.start是腳本文件,用戶能夠根據本身系統的特色去適當修改它,以便其啓動) 4、使用腳本操做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)權限。 8、卸載: 1、在rc.local文件中刪除你手工添加的開機自動啓動Jexus的命令行(若是原本就沒有添加過,這步操做就沒必要作了) 2、刪除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