一、运行环境如下:
1、物理主机一台,CPU:core2 T5750,2G内存,Windows 7操作系统,IP地址192.168.1.98,主机名sxwgf-PC,该主机用来当作Nginx代理服务器(P)和一台Web服务器(A);
2、在物理主机中开一台虚拟主机,Windows Server 2003操作系统,IP地址192.168.1.99,主机名hzdk-vpc,该主机用来当作另一台Web服务器(B)。
二、现在要达到这样一个目标:通过浏览器访问Web服务器A和Web服务器B,由Nginx代理服务器P自动调节A和B的访问压力。好了,现在具体来配置各个服务器:
1、已结安装了Nginx,直接启动它,如果正确启动,任务管理器中会有两个名为nginx的守护进程,确保启动后,进行如下配置: 找到nginx的解压目录,这边是c: ginx,打开conf目录下的nginx.conf,具体配置代码如下:
worker_processes 1
events {
worker_connections 1024
}
http {
include mime.types
default_type application/octet-stream
sendfileon
keepalive_timeout 65
upstream wgf.com{
server 192.168.1.98 #真实服务器A(sxwgf-PC)
server 192.168.1.99 #真实服务器B(hzdk-vpc)
}
server {#Nginx代理服务器
listen 8088
server_name localhost
location / {
root html
index index.html index.htm
proxy_pass http://www.kuqin.com
proxy_redirect default
}
error_page 500 502 503 504 /50x.html
location = /50x.html {
root html
}
}
}
2、由于配置文件已被改动,所以要重启nginx服务,可以在任务管理器中先结束两个nginx进程,再启动nginx;也可以在命令行中执行nginx -s reload。
3、把实现准备好的一个测试网站分别部署到主机A和主机B的IIS中,其访问地址分别为:192.168.1.98和192.168.1.99,分别访问他们。
4、最后再来访问一下nginx代理服务器,看看他能不能访问到真实的服务器A和B,访问结果是每刷新一次就在A和B之间切换,好像在轮次访问A和B一样,但表面上都是访问的代理服务器127.0.0.1:8088,这样就用一个虚拟的ip地址127.0.0.1:8088来动态访问真实服务器A和B,由于是轮次访问,所以减轻了服务器A和B的负担,起到了简单的负载均衡的作用,提高应用的性能。
首先说说 Nginx:Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。云帆提供Flash端的SDK开发包,你可根据自己的需求开发成视频网站和视频播放器,使用云帆技术可以帮助你快速轻量级的实现视频网站和视频播放器,降低编解码技术和网络传输技术的开发成本。其中,便支持自搭建Nginx、apache服务。
那么该如何安装配置Nginx,让它服务于我们呢?相信有不少同学不清楚windows怎么安装配置nginx,以下一个一个步骤,详细地介绍下:
1、下载nginx稳定版
2、解压nginx.zip,将解压后的目录移动到指定要求目录,如c:\nginx
3、进到该目录去,nginx.exe是nginx启动程序,conf是nginx一些配置文件目录,其中nginx.conf是nginx主配置文件
4、编辑主配置文件nginx.conf
#表示注释
nginx配置文件里默认用相对路径,是相对nginx的根目录,如果采用上面那就是相对c:\nginx,也可以用绝对路径
nginx.conf
worker_processes 4 #设置跟cpu核数一样就行
events {
worker_connections 10240
}
http {
include mime.types
default_type application/octet-stream
sendfile on
keepalive_timeout 15
server_tokens off
gzip on
gzip_min_length 1k
gzip_buffers 4 16k
gzip_http_version 1.0
gzip_comp_level 4
gzip_vary on
gzip_types text/plain text/css text/xml application/x-javascript application/xml application/atom-xmltext/javascript
client_header_buffer_size 32k
large_client_header_buffers 4 32k
client_body_buffer_size 128k
server {
listen 80#监听端口
server_name demo.yunfancdn.com #主机名
root C:/web/html #网站根目录,这里要按照unix写法,不能这样写C:\ProgramFiles
client_max_body_size2M
index index.html
location ~.*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 15d
}
location ~.*\.(js|css)?$
{
expires 20m
}
}
}
5、启动nginx
打开cmd,检查配置文件有没语法错误
输入c:\nginx\nginx.exe -t
nginx: the configuration fileC:\nginx-1.8.0/conf/nginx.conf syntax is ok
nginx: configuration fileC:\nginx-1.8.0/conf/nginx.conf test is successful
windows下如何安装配置nginx
看到上面的ok和successful就没问题了。
然后双击nginx.exe就可以开启
检查nginx是否启动
更多操作像重新加载nginx ,cmd输入命令:nginx –s reload,想获取更多帮助,请在cmd里,输入nginx.exe -h 查看。
另外想获取更多nginx相关资料,请查看nginx官档http://nginx.org/
6、启动843端口
下载843程序
下载到本地后直接执行Flash843_Windows.exe即可
注:后续会改善将该程序写入到系统服务中
• 何为框架:
框架一直是敏捷开发中的利器,能让开发者很快的上手并做出应用,甚至有的时候,脱离了框架,一些开发者都不会写程序了。成长总不会一蹴而就,从写出程序获取成就感,再到精通框架,快速构造应用,当这些方面都得心应手的时候,可以尝试改造一些框架,或是自己创造一个。
Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,已经发布了1.0版本。具有快速灵活,容错方便等特点。其实对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错。框架更像是一些常用函数或者工具的集合。借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范。
(1)首先需要安装,安装比较简单,使用go get即可
go get github.com/gin-gonic/gin
如果安装失败,直接去Github clone下来,放置到对应的目录即可。
(2)代码中使用:
下面是一个使用Gin的简单例子:
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
router := gin.Default()
router.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
router.Run(":8080") // listen and serve on 0.0.0.0:8080
}
简单几行代码,就能实现一个web服务。使用gin的Default方法创建一个路由handler。然后通过HTTP方法绑定路由规则和路由函数。不同于net/http库的路由函数,gin进行了封装,把request和response都封装到gin.Context的上下文环境。最后是启动路由的Run方法监听端口。麻雀虽小,五脏俱全。当然,除了GET方法,gin也支持POST,PUT,DELETE,OPTION等常用的restful方法。
Gin可以很方便的支持各种HTTP请求方法以及返回各种类型的数据,详情可以前往https://github.com/gin-gonic/gin查看。
2.1 匹配参数
我们可以使用Gin框架快速的匹配参数,如下代码所示:
冒号:加上一个参数名组成路由参数。可以使用c.Param的方法读取其值。当然这个值是字串string。诸如/user/rsj217,和/user/hello都可以匹配,而/user/和/user/rsj217/不会被匹配。
浏览器输入以下测试:
返回结果为:
其中c.String是gin.Context下提供的方法,用来返回字符串。
其中c.Json是gin.Context下提供的方法,用来返回Json。
下面我们使用以下gin提供的Group函数,方便的为不同的API进行分类。
我们创建了一个gin的默认路由,并为其分配了一个组 v1,监听hello请求并将其路由到视图函数HelloPage,最后绑定到 0.0.0.0:8000
C.JSON是Gin实现的返回json数据的内置方法,包含了2个参数,状态码和返回的内容。http.StatusOK代表返回状态码为200,正文为{"message": “welcome"}。
注:Gin还包含更多的返回方法如c.String, c.HTML, c.XML等,请自行了解。可以方便的返回HTML数据
我们在之前的组v1路由下新定义一个路由:
下面我们访问
可以看到,通过c.Param(“key”)方法,Gin成功捕获了url请求路径中的参数。同理,gin也可以捕获常规参数,如下代码所示:
在浏览器输入以下代码:
通过c.Query(“key”)可以成功接收到url参数,c.DefaultQuery在参数不存在的情况下,会由其默认值代替。
我们还可以为Gin定义一些默认路由:
这时候,我们访问一个不存在的页面:
返回如下所示:
下面我们测试在Gin里面使用Post
在测试端输入:
附带发送的数据,测试即可。记住需要使用POST方法.
继续修改,将PostHandler的函数修改如下
测试工具输入:
发送的内容输入:
返回结果如下:
备注:此处需要指定Content-Type为application/x-www-form-urlencoded,否则识别不出来。
一定要选择对应的PUT或者DELETE方法。
Gin框架快速的创建路由
能够方便的创建分组
支持url正则表达式
支持参数查找(c.Param c.Query c.PostForm)
请求方法精准匹配
支持404处理
快速的返回给客户端数据,常用的c.String c.JSON c.Data
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)