nginx 代理转发 wcf接口
前言
以前对比过enginx和其他几个web服务器(IIS,Apache,lighttpd)的处理静态文件的能力,enginx是最好的,甚至超过其他的几倍。
虽说enginx官方声明在Windows上的表现不如Linux等OS,经过测试enginx的异步处理和响应真出乎意料。
正文
测试的目的和思路:
后台接口用wcf,json作为请求和响应的类型,HTTP协议。
纯前端用angular及路由,enginx作为web服务器。
凡请求后台接口enginx都代理转发到wcf处理。
测试上下文:
Firebird3.0.3标准版、ORM微框架FluentData、VS2015、WebStorm2017.
数据库访问:
class DbCxt
{
private static string _connStr = ""; static DbCxt()
{
FbConnectionStringBuilder connBuilder = new FbConnectionStringBuilder();
connBuilder.DataSource = "localhost";
connBuilder.UserID = "sysdba";
connBuilder.Password = "";
connBuilder.Database = "wms";
connBuilder.Charset = "utf8";
connBuilder.Dialect = ;
connBuilder.ServerType = FbServerType.Default; _connStr = connBuilder.ConnectionString; } public static IDbContext NewDbContext()
{
return new DbContext().ConnectionString(_connStr, new DB2Provider()
, FirebirdClientFactory.Instance);
} public static string ConnStr()
{
return _connStr;
}
}
wcf接口:
[ServiceContract]
public interface IWmsService
{
[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
DtoResult<DtoUser> AddUser(DtoUser usr);
}
接口实现:
public class WmsService : IWmsService
{
public DtoResult<DtoUser> AddUser(DtoUser usr)
{
if (usr != null)
{
DateTime creTime = DateTime.Now;
DateTime.TryParse(usr.CreTime, out creTime);
using (var db = DbCxt.NewDbContext())
{
int count = db.Insert("m_user")
.Column("code", usr.Code)
.Column("label", usr.Label)
.Column("cre_time", creTime)
.Column("remark", usr.Remark)
.Execute();
return new DtoResult<DtoUser>() {State = , Data = usr};
}
}
return new DtoResult<DtoUser>() {State = , Msg = "用户不能为空"};
}
}
wcf宿主:
static void Main(string[] args)
{
ServiceHost host = new ServiceHost(typeof(Wms.Service.WmsService));
host.Open();
Console.WriteLine("已启动");
Console.WriteLine("回车键退出");
Console.ReadLine();
}
wcf配置:
<system.serviceModel>
<services> <service name="Wms.Service.WmsService" behaviorConfiguration="http" >
<host>
<baseAddresses>
<add baseAddress="http://localhost:20001/WmsService"/>
</baseAddresses>
</host>
<endpoint binding="webHttpBinding" contract="Wms.Service.IWmsService" behaviorConfiguration="web"></endpoint>
</service>
</services> <behaviors>
<serviceBehaviors>
<behavior name="mex">
<serviceMetadata/>
</behavior>
<behavior name="http">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true" httpHelpPageEnabled="true"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp helpEnabled="true"/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
前端页面:

js提交代码:Note 请求URL最前的/不能省,因为后面enginx配置代理时不允许前缀后面加/
$scope.data = {
Code: '', Label: '', CreTime: new Date().Format('yyyy-MM-dd hh:mm:ss'), Remark: '', Pwd:'123456'
};
$scope.save = function () {
$http.post('/wmsService/addUser', $scope.data).then(function (value) {
console.log(value);
})
};
enginx代理转发部分配置:~*表示URL不区分大小写匹配,因为默认wcf也不区分。
location ~* /WmsService/ {
proxy_pass http://127.0.0.1:20001;
}
enginx其他配置都取默认,除端口改为10005以外。
nginx 代理转发 wcf接口的更多相关文章
- Nginx代理转发Apache+svn
1.安装svn和httpd yum install httpd yum install subversion mod_dav_svn 创建仓库目录 mkdir -p /var/www/svn 3.创建 ...
- 10分钟学会windows中iis搭建服务器集群实现负载均衡和nginx代理转发
前言 我们之前聊过 10分钟搭建服务器集群--Windows7系统中nginx与IIS服务器搭建集群实现负载均衡:https://www.cnblogs.com/xiongze520/p/103087 ...
- 【转】Nginx反向代理转发tomcat
http://blog.csdn.net/mlc1218559742/article/details/53117520 最近刚接触nginx,在网上查阅了相关资料,看到最多的形容nginx的词就是反向 ...
- nginx 1.15.10 前端代理转发 将多个地址,代理转发到一个地址和端口 多系统公用一个cookie 统一token
nginx 1.15.10 前端代理转发 将多个地址,代理转发到一个地址和端口 多系统公用一个cookie 统一token 注意: proxy_pass http://192.168.40.54:22 ...
- 使用Nginx代理和转发Websocket连接
1.Websocket 简介 WebSocket协议是基于TCP的一种新的网络协议.它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端. 2.Nginx 简介 ...
- nginx反向代理转发后页面上的js css文件无法加载【原创】
故障现象:nginx做代理转发后,发现页面上的js css文件无法加载,页面样式乱了. 原因:没有配置静态资源 解决js css文件无法加载无法访问的问题 解决办法: 修改配置文件nginx.conf ...
- nginx反向代理转发apache配置 之 cookie去哪儿了?
在公司接手了个微信项目,由于微信环境下访问网站需要使用对外开放的域名,所以有相关问题,都是直接运维同事帮忙处理. 原理是这样: 方案一: 1. 将域名解析指向测试服务器的地址: 2. 开放相关端口访问 ...
- 医院内外网之间通过网闸交互,通过端口转发加nginx代理实现内网访问外网
首先介绍下主要需求,很简单,就是要在医院his系统内嵌公司的平台,实现内网直接访问外网 这是院方给我提供的网闸相关配置,105是医院内网的服务器,120是外网的服务器,中间通过网闸配置的几个端口实现互 ...
- Next.js 配置接口跨域代理转发
使用 create-next-app 创建的 Next.js 项目配置接口跨域代理转发需要用到 custom server 功能. 先安装好 express 和 http-proxy-middlewa ...
随机推荐
- 使用扩展方法重写.NET底层架构
我们在开发B/S架构的项目时,用到的都是.NET底层各种命名空间提供的操作类,利用扩展类可以重新写出一套真正属于你自己的框架. PS:扫描下方二维码或点击链接,加入QQ群
- 【后缀数组之height数组】
模板奉上 int rank[maxn],height[maxn]; void calheight(int *r,int *sa,int n) { ; ;i<=n;i++) rank[sa[i]] ...
- 吃奶酪 状压dp
题目描述 房间里放着n块奶酪.一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处. 输入输出格式 输入格式: 第一行一个数n (n<=15) 接下来每行2个实数,表示第i块 ...
- ie下的值改变事件
前两天在页面上写了一个值改变事件,值是用js改变的,用的oninput方法和onpropertyChange方法,但是可能是因为框架的缘故,在ie浏览器下,陷入了莫名其妙的循环中.然后考虑是在加载的时 ...
- 基于iTop4412的FM收音机系统设计(一)
说明:第一版架构为:APP+JNI(NDK)+Driver(linux),优点是开发简单,周期短,也作为自己的毕业设计 现在更新第二版,FM服务完全植入Android系统中,成为系统服务,架构为:AP ...
- python中的try/except/else/finally语句
与其他语言相同,在python中,try/except语句主要是用于处理程序正常执行过程中出现的一些异常情况,如语法错误(python作为脚本语言没有编译的环节,在执行过程中对语法进行检测,出错后发出 ...
- python函数超时情况应对总结
最近处理一个线程中的函数超时问题. 函数里面有一个地方可能会卡死,我们需要去判断这个是不是卡死了,并做出相应的应对方案. 最开始想的是在函数上增加一个装饰器,使其在超时时抛出异常,然后在其他地方捕获这 ...
- 使用app-inspector查看元素,无法连接到手机,提示错误{ Error: Command failed ……forward tcp:9001 tcp:9001错误解决
在学习使用app-inspector查看元素时,碰到一个问题.在cmd窗口执行命令app-inspector --port 5678 -u 85EABNFSU53R --verbose ,连接不到手 ...
- Windows与linux添加用户命令
Windows 查看当前存在用户: net user 查看当前用户组: net localgroup 添加用户(以添加用户test密码test1234为例): net user test test12 ...
- ionic3打包打包安卓apk详细过程以及遇到的问题
1.jdk和sdk的安装以及环境变量配置参考打包详解 上述连接已经从下载安装jdk以及sdk的环境变量配置到打包的流程以及很详细了.但是在我自己安装打包的过程中遇到了这篇文章中没有遇到的问题,下面图文 ...