All posts by 龙生
Centos7下nginx配置https
Centos7下nginx配置https 在互联网信息安全日益重要的今天,https协议几乎成了标配,部分浏览器如果遇到非https的服务器会拒绝访问,有的平台也要求app的服务器要用https协议(如苹果、微信小程序)。 下面是个人配置https的笔记,先完整记录下来,不然到时遇到问题又各种百度。 一、步骤1 配置nginx 假如你已经申请到了https证书,而且有nginx下的版本,通常是两个文件,一个是 .key 后缀的文件,为证书的私钥,另一个是 .crt 后缀的文件,为证书的公钥。 nginx.conf 配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
server { listen 443 ssl; server_name www.server.com default_server; #1 ssl_certificate ssl/bundle.crt; #2 ssl_certificate_key ssl/cert.key; #3 ssl_session_cache shared:SSL:1m; 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; } |
把#1所在行的 www.sever.com 改成你的域名(注意:这个域名是你申请证书时用的域名)。 把#2所在行的 ssl/bundle.crt* 改成你实际文件的路径,如果是相对路径,那么是相对于nginx的conf目录的路径。 把#3所在行的 ssl/cert.key* 改成你实际文件的路径,如果是相对路径,那么是相对于nginx的conf目录的路径。 如果要让用户用http协议访问时自动跳转https,则还需加上如下配置:
1 2 3 4 5 |
server { listen 80; server_name www.server.com; rewrite ^(.*)$ https://www.server.com; } |
就是一个url重写而已。 注意要把 www.server.com 改成你实际的主机名。 配置完后,用如下命令
1 |
nginx -t |
测试下配置文件有没有错误。 如果没有错误,用如下命令
1 |
nginx -s reload |
重启nginx,然后用浏览器测试下用https协议能否正常访问服务器。 如果不能访问,请确认下证书路径有没有问题,如果没有,请看下面的 步骤2。 二、步骤2 开启服务器的防火墙 需要该步骤是因为服务器的防火墙没有开通443端口。 centos7 下用的防火墙是firewalld,配置防火墙用命令firewall-cmd。 开通443端口
1 |
firewall-cmd --zone=public --add-port=443/tcp --permanent |
确认是否开通
1 |
firewall-cmd --list-ports |
如果可以看到443/tcp字样就说明开通了 重新加载下防火墙配置
1 |
firewall-cmd --reload |
执行完该步骤,大多数服务器应该可以正常用https协议访问。 如果不能,如果你用的是阿里云服务器,请看步骤3。如果是其它服务器,请自行百度。 步骤3 在安全组规则开通443端口 需要该步骤的原因是因为云服务器的安全组规则上没有开通相关的端口。 做完步骤3,应该可以用https了。如果还不能,提交工单问技术人员吧。或者再检查下步骤1与步骤2有没有做到位。 from:https://blog.csdn.net/chunyuan314/article/details/77369110
View Detailsnginx强制使用https访问(http跳转到https)
原文:http://blog.csdn.net/wzy_1988/article/details/8549290 需求简介 基于nginx搭建了一个https访问的虚拟主机,监听的域名是test.com,但是很多用户不清楚https和http的区别,会很容易敲成http://test.com,这时会报出404错误,所以我需要做基于test.com域名的http向https的强制跳转 我总结了三种方式,跟大家共享一下 nginx的rewrite方法 思路 这应该是大家最容易想到的方法,将所有的http请求通过rewrite重写到https上即可 配置 server { listen 192.168.1.111:80; server_name test.com; rewrite ^(.*)$ https://$host$1 permanent; } 搭建此虚拟主机完成后,就可以将http://test.com的请求全部重写到https://test.com上了 nginx的497状态码 error code 497 497 – normal request was sent to HTTPS 解释:当此虚拟站点只允许https访问时,当用http访问时nginx会报出497错误码 思路 利用error_page命令将497状态码的链接重定向到https://test.com这个域名上 配置 server { listen 192.168.1.11:443; #ssl端口 listen 192.168.1.11:80; #用户习惯用http访问,加上80,后面通过497状态码让它自动跳到443端口 server_name test.com; #为一个server{……}开启ssl支持 ssl on; #指定PEM格式的证书文件 ssl_certificate /etc/nginx/test.pem; #指定PEM格式的私钥文件 ssl_certificate_key /etc/nginx/test.key; #让http请求重定向到https请求 error_page 497 https://$host$uri?$args; } index.html刷新网页 思路 上述两种方法均会耗费服务器的资源,我们用curl访问baidu.com试一下,看百度的公司是如何实现baidu.com向www.baidu.com的跳转 可以看到百度很巧妙的利用meta的刷新作用,将baidu.com跳转到www.baidu.com.因此我们可以基于http://test.com的虚拟主机路径下也写一个index.html,内容就是http向https的跳转 index.html [html] view plaincopyprint? <html> <meta http-equiv="refresh" content="0;url=https://test.com/"> </html> nginx虚拟主机配置 server { listen 192.168.1.11:80; server_name test.com; location / { #index.html放在虚拟主机监听的根目录下 root /srv/www/http.test.com/; } #将404的页面重定向到https的首页 error_page 404 https://test.com/; } 后记 上述三种方法均可以实现基于nginx强制将http请求跳转到https请求,大家可以评价一下优劣或者根据实际需求进行选择。 from:http://www.cnblogs.com/yun007/p/3739182.html
View DetailsIIS 10 HTTP 跳转HTTPS
上环境:windows server 2016 IIS 10 需求:访问HTTP 跳转到HTTPS 软件:http://download.microsoft.com/download/E/A/9/EA9F19BC-0EEB-49C9-B32D-56852BBE56DA/rewrite_amd64_zh-CN.msi 配置如下: 1.选择需要配置的站点,先绑定域名http 跟https 域名: 2.打开URL 重写添加规则: 3.编辑规则: 以上配置完成,便可以测试域名,自动跳转; from:https://www.cnblogs.com/itusye/p/7927787.html
View Detailsueditor iframe被过滤掉问题,优酷视频链接
打开下载的ueditor目录中ueditor.config.js文件,找到如下标签白名单代码 原文地址:侯哥小博 http://37blog.com/?p=61 在任意处加上如下代码,如果你所添加的iframe中还包含其它标签,只需要在数组中继续添加元素即可。
1 |
iframe: ['frameborder','src','width','height'], |
from:https://blog.csdn.net/houbin99999/article/details/72965385
View DetailsSQL Server 跨库同步数据
最近有个需求是要跨库进行数据同步,两个数据库分布在两台物理计算机上,自动定期同步可以通过SQL Server代理作业来实现,但是前提是需要编写一个存储过程来实现同步逻辑处理。这里的存储过程用的不是opendatasource,而是用的链接服务器来实现的。存储过程创建在IP1:192.168.0.3服务器上,需要将视图v_custom的客户信息同步到IP2:192.168.0.10服务器上的t_custom表中。逻辑是如果不存在则插入,存在则更新字段。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
create PROCEDURE [dbo].[p_pm_项目平台客户批量同步到报销平台]( @destserver nvarchar(50), @sourceserver nvarchar(50) ) AS BEGIN SET NOCOUNT ON; --不存在则添加链接服务器,外部查询必须指明IP地址,例如 select * from [IP].[database].[dbo].[table] if not exists (select * from sys.servers where server_id!=0 and data_source=@destserver) begin exec sp_addlinkedserver @server=@destserver end if not exists (select * from sys.servers where server_id!=0 and data_source=@sourceserver) begin exec sp_addlinkedserver @server=@sourceserver end begin try set xact_abort on begin transaction --http://www.cnblogs.com/chnking/archive/2007/04/04/699891.html INSERT INTO [192.168.0.10].[dbCRM].[dbo].[t_custom] (客户ID, 客户名称, 客户简称, 输入码, 查询码, 地址, 录入登录名, 录入时间, 修改登录名, 修改时间, 审批状态ID, 审批状态名称, 是否审批结束, 审批操作时间, 项目管理客商编码, 序号) SELECT A.客户ID,A.客户名称, A.客户简称, dbo.fn_pm_GetPy(A.客户名称), A.客户编号+','+A.客户名称+','+dbo.fn_pm_GetPy(A.客户名称)+','+A.客户简称+','+dbo.fn_pm_GetPy(A.客户简称), A.地址, 'admin', getdate(), null, null, 'D65F87A8-79C8-4D1C-812D-AE4591E056A8', '已审批', 1, A.审批操作时间, A.项目管理客商编码, 0 FROM [dbPM].[dbo].[v_custom] A WHERE A.客户ID NOT IN ( SELECT 客户ID FROM [192.168.0.10].[dbCRM].[dbo].[t_custom]); ----------------------------------存在更新----------------------------------- update A set A.客户名称=B.客户名称, A.客户简称=B.客户简称, A.输入码=dbo.fn_pm_GetPy(B.客户名称), A.查询码=B.客户编号+','+B.客户名称+','+dbo.fn_pm_GetPy(B.客户名称)+','+B.客户简称+','+dbo.fn_pm_GetPy(B.客户简称), A.地址=B.地址, A.修改登录名='admin', A.修改时间=getdate(), A.项目管理客商编码 =B.项目管理客商编码 from [192.168.0.10].[dbCRM].[dbo].[t_custom] A,[dbPM].[dbo].[v_custom] B where A.客户ID=B.客户ID; commit transaction end try begin catch select ERROR_NUMBER() as errornumber,ERROR_MESSAGE() as errormsg,ERROR_LINE() as errorline rollback transaction end catch END |
如果没有正确配置,经常会出现 消息 7391,级别 16,状态 2,过程 xxxxx,第 XX 行 。无法执行该操作,因为链接服务器 "xxxxx" 的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务。 可以参照如下的配置: 具体可以参看:http://www.cnblogs.com/chnking/archive/2007/04/04/699891.html from:https://www.cnblogs.com/isaboy/p/sql_server_job.html
View Details把数据行转换为相应的实体
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
/// <summary> /// 把数据行转换为相应的实体 /// </summary> /// <typeparam name="T">实体</typeparam> /// <param name="dataRow">数据行</param> /// <returns></returns> public static T DataRowToModel<T>(DataRow dataRow) where T : new() { // 返回值容器 var model = new T(); // 例外检查 if (dataRow == null) { return model; } // Model属性 var t = model.GetType(); var properties = t.GetProperties(); // 循环赋值 foreach (var propertyInfo in properties) { // 属性名 var propertyName = propertyInfo.Name; // 检查Model属性是否存在于列名中 if (!dataRow.Table.Columns.Contains(propertyName)) { continue; } // 数据库为null时跳过 if (dataRow[propertyName] == DBNull.Value) { continue; } // 设置Model的值 propertyInfo.SetValue(model, dataRow[propertyName]); } return model; } } |
View Details
git – 简明指南
助你入门 git 的简明指南,木有高深内容 😉 作者:罗杰·杜德勒 感谢:@tfnico, @fhd 和 Namics 如有纰漏,请在 github 提报问题 安装 下载 git OSX 版 下载 git Windows 版 下载 git Linux 版 创建新仓库 创建新文件夹,打开,然后执行 git init 以创建新的 git 仓库。 检出仓库 执行如下命令以创建一个本地仓库的克隆版本: git clone /path/to/repository 如果是远端服务器上的仓库,你的命令会是这个样子: git clone username@host:/path/to/repository 工作流 你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 暂存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,它指向你最后一次提交的结果。 添加和提交 你可以提出更改(把它们添加到暂存区),使用如下命令: git add <filename> git add * 这是 git 基本工作流程的第一步;使用如下命令以实际提交改动: git commit -m "代码提交信息" 现在,你的改动已经提交到了 HEAD,但是还没到你的远端仓库。 推送改动 你的改动现在已经在本地仓库的 HEAD 中了。执行如下命令以将这些改动提交到远端仓库: git push origin master 可以把 master 换成你想要推送的任何分支。 如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加: git remote add origin <server> 如此你就能够将你的改动推送到所添加的服务器上去了。 分支 分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。 创建一个叫做“feature_x”的分支,并切换过去: git checkout -b feature_x 切换回主分支: git checkout master 再把新建的分支删掉: git branch -d feature_x 除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的: git […]
View DetailsWindows操作系统下搭建Git服务器和客户端。
本文将介绍如何在Windows操作系统下搭建Git服务器和客户端。服务器端采用的是Bonobo Git Server,一款用ASP.NET MVC开发的Git源代码管理工具,界面简洁,基于Web方式配置,简单易用。客户端是采用的TortoiseGit工具,UI操作,省去输入命令的麻烦,对于windows用户来说更易于使用。 所需软件: Git服务器端: BONOBO GIT SERVER,下载最新版:http://bonobogitserver.com/ Git客户端: msysgit,下载最新的软件:https://msysgit.github.io/ TortoiseGit,下载最新的软件:https://code.google.com/p/tortoisegit/ 如果以上连接无法正常访问, 序号1:可百度搜索:GIT64位或GIT32位等关键字找到相应的版本进行下载. 序号2:可百度搜索:TortoiseGit 64位或者GIT32位等关键字找到相应的版本进行下载. 一:配置服务器端 以下案例服务器环境是基于Windows10 + IIS7 + Bonobo Git Server 5.2 + WebDAV ,其他版本的操作系统或IIS略有不同 在Windows10下打开IIS7功能。开始-》控制面板-》程序-》启用或关闭windows功能,勾选Internet Information Services的选项。不会的可以谷歌或百度下。 2.下载好的Bonobo Git Server。是一个.zip压缩包文件,是用ASP.NET MVC开发的网站。 3.解压上步下载的压缩包到C:\inetpub\wwwroot。 4.修改APP_Data文件夹权限。允许IIS用户修改网站代码中的(C:\inetpub\wwwroot\Bonobo.Git.Server\App_Data)文件夹,所以需要做如下配置: 在APP_Data文件夹上右键选择“属性” 到“Security”(安全)的Tab页点击“Edit”(编辑) 给IIS_IUSRS赋予Write和Modify权限。(我通常是直接选择:完全控制) =》如果上步骤没找到IIS_IUSRS用户。那就点击添加→左下角高级→右边点击立即查找,最后添加即可,这样就可以在 “组或用户名”列表中显示了. 以上配置好之后, 我们首先打开IIS管理器。 1.选择:网站右击添加网址,然后弹出一个添加网站的界面, 自己拟定一个网站名称,然后物理路径也就是刚才那个解压好的文件包的路径。最好一步自定义一个端口号确定即可。 2.上步操作之后, 我们可以在网站列表中看到刚才添加好的网站。然后我们点击》 应用程序池,找到我们刚发布的网站,看看.NET Framework 版本是否是4.0。 如果不是,请右击网站,点击》基本设置,选择4.0即可,托管管道模式选择》集成 。 3. 最后一步:选择网站右击》管理网址》浏览,(或者右边中间的位置有个:浏览网站)如果能看到如下界面, 说明我们已经部署成功了。默认管理员账号密码均为:admin 如果对英文不习惯的,可以先通过admin账号密码登陆进去。再到上面菜单栏找到Settings》Language》Chinese(Simplified,PRC)即可。 到此我们的Git服务器已经搭建完成. 不过下面有个问题提醒: 》如果是第一次使用 IIS管理器, 很有可能报各种错, 其中有个错误好像是要给IIS注册>FrameWork 4.0。 下面简单介绍下IIS注册FrameWork4.0的步骤。或者直接百度》IIS注册FrameWrok 4.0方法。 1.打开dos命令窗口,打开窗口时请以管理员的身份打开。 开始->输入cmd->找到cmd.exe->右键cmd.exe->以管理员身份打开(弹出菜单)->打开dos命名窗口。 2.打开framework4.0所在目录,一般情况下在此目录下:C:\Windows\Microsoft.NET\Framework\v4.0.30319 3.在dos窗口中,后面按空格键,然后输入 -i 参数。(C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i)输入完毕后,回车即安装framework4.0到iis上。 from:https://www.cnblogs.com/ws1996/p/6257190.html
View Details在Windows上搭建Git Server
Git在版本控制方面,相比与SVN有更多的灵活性,对于开源的项目,我们可以托管到Github上面,非常方便,但是闭源的项目就会收取昂贵的费用。 那么私有项目,如何用Git进行代码版本控制呢?我们可以自己构建Git服务器。一般来说,在Linux上搭建Git的教程比较多,但是如何在Windows Server平台下搭建Git服务器呢? 对于很多.NET用户来说,代码编写的工具是Visual Studio,该工具是不支持SSH协议的,通过搜索和对比,发现Gitblit可以很方便的搭建服务,他是用Java编写的,所有安装的前提是安装Java运行时环境。 第1步:下载Java并安装Java.我这里下载的是jdk1.7.0_79 第2步:配置Java环境变量 右键” 计算机” => ”属性” => ”高级系统设置” => ”高级” => “环境变量” => “系统变量”。 新建:变量名:JAVA_HOME;变量值:C:\Program Files\Java\jdk1.7.0_79【具体要根据你自己的安装路径,我的是安装在D盘的】 新建:变量名:CLASSPATH;变量值:%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar 添加:找到PATH变量,选择编辑。把%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin添加到”变量值”的结尾处。 第3步:验证Java是否安装成功。 在命令窗口中,输入javac, 回车,如果出现如下信息,说明安装成功。 第4步:下载Gitblit.下载地址:http://www.gitblit.com/ 第5步:解压缩下载的压缩包即可,无需安装。路径为 C:\gitblit-1.8.0 第6步:创建用于存储项目代码的文件夹。这里为G:\GitProject\webui 第7步:配置gitblit,文件在C:\gitblit-1.8.0\data下,打开gitblit.properties ,里面有 include = defaults.properties,说明配置信息在defaults.properties中 2.找到git.repositoriesFolder(资料库路径),赋值为G:\GitProject\webui。 3.找到server.httpPort,设定http协议的端口号 4.找到server.httpBindInterface,设定服务器的IP地址。这里就设定你的服务器IP。 5.找到server.httpsBindInterface,设定为localhost 另外注意看看server.shutdownPort ,其默认值为 8081,是否被占用,如果占用请修改。 6.保存,关闭文件。 第8步:运行gitblit.cmd 批处理文件。运行结果如下,运行成功。 在浏览器中输入:http://192.168.180.159:10010/ ,默认可以用admin和admin进行登录,然后改密即可。 […]
View Details