nginx初学入门

因为前几天加班比较多,人也比较累,不怎么想学习新的知识,周三加班到周四凌晨1点多,周四晚上直接到周五4点钟才睡,上午还要去上班,结果项目线上小问题不断,搞的身心俱疲,副能量爆满!!!周末就想着好好放松下,所以今天来点简单的!nginx,其实自己接触nginx也比较长时间了,上家公司项目使用nginx主要作为的是静态资源服务器,毕竟nginx的性能在业界也是有目共睹的,但是自己并没有怎么学习过nginx,只是懂的一点点配置。这次之所以想起再来看nginx是因为前段时间自己想在自己的服务器上搞一个jet brains的服务器,方便自己使用,其中就用nginx作为反向代理服务器使用,结果呢,搞了半天也没成功,也不知道是哪方面原因。所以自己准备再研究一下,不然以后经常找IDE的破解码也挺麻烦(壕们请支持正版)。不管怎么说nginx作为一个优秀的web服务器确实是值得我们去好好学习一下的。

一、安装和启动

这次我使用的是安装包安装,当然觉得麻烦也可以使命令直接安装。我这次安装下载的1.14版本,应该是最新版本了。下载之后进入相应文件夹下,执行解压命令:

tar zxvf nginx-1.14.0.tar.gz

大概看下解压的目录结构:


2018-11-03 20-18-58 的屏幕截图.png

然后使用默认的配置,即执行./configure命令,结果报错,提示HTTP rewrite模块需要PCRE库。当然给出的方案要不禁用http_rewrite模块,要不系统安装PCRE库。所以就选择在自己系统安装PCRE库吧。


2018-11-03 20-19-47 的屏幕截图.png

执行命令安装PCRE和它的二次开发库:

sudo apt-get install libpcre3 libpcre3-dev

PCRE库支持正则表达式。如果我们在nginx.conf中使用了正则表达式,那么在编译nginx时就必须把PCRE库编译进nginx,因为HTTP模块需要靠它来解析正则表达式。而pcre-devel是使用PCRE做二次开发时所需要的开发库,包括头文件等,这也是编译nginx需要使用到的。
仅仅安装了PCRE库是不够的,还需要安装zlib库,这个是HTTP gzip模块需要使用到。zlib库用于对HTTP包的内容做gzip格式的压缩,如果我们在nginx.conf中配置了gzip on,并指定对于某些类型(content-type)的HTTP响应使用gzip来进行压缩以减少网络传输量(如果你仔细看过http请求的时候就会注意到这点),因此在编译时必须把zlib编译进nginx,zlib-devel是二次开发所需要的库。所以还需要执行下面的命令:

sudo apt-get install zlib1g-dev

最后如果服务器不只是要支持HTTP还想支持更安全的HTTPS,那么就还需要安装OpenSSL,我的系统之前已经安装过了,安装命令:

sudo apt-get install openssl libssl-dev 

这时候再次执行默认配置如图所示:


2018-11-03 20-31-20 的屏幕截图.png

然后编译安装nginx:

sudo make install

编译安装完之后我们看到安装目录下,即"/usr/local/nginx",然后进入"/sbin目录",启动nginx:

sudo ./nginx

使用浏览器访问:localhost:80,显示nginx的index.htm页面,说明服务器成功启动。
这里简单说下nginx常用命令

./nginx 
./nginx -s quit
./nginx -s stop
./nginx -s reload

quit和stop都是停止服务器的意思,但是quit的命令会在关闭服务器前完成正在服务的连接,而stop就是立即停止服务。另外如果对nginx的配置文件进行了修改,并想使其生效,可以用reload命令。

二、反向代理配置

关于什么是反向代理,以及和代理的区别这里就不细述了,如果又不了解建议百度或者谷歌一下,其实很好理解。我这里只是做一个最简单的配置,比如现在我想让用户访问localhost:80/这个请求的时候,显示百度的首页,那么我就可以到"/usr/local/conf/"下进行配置,打开nginx.conf文件,在http模块的server自摸块下面修改配置文件内容,在location下添加代理的地址就可以了,如下图:


2018-11-04 12-09-33 的屏幕截图.png

其实从http模块我们也可以看到一些基本的配置的内容,比如文件mime类型,默认的类型为二进制流,此外日志格式和日志位置,文件传输,连接超时时间以及gzip设置。
server下面主要是监听端口号,服务器名称,这里可以是域名也可以是ip地址,另外还有就是字符编码和日志。location主要是配置URL和解析URL,比如默认情况下用户访问localhost:80,nginx会到响应的内容是html下面的index.html或者index.htm,root这里使用的是相对路径(相对于nginx安装目录),当然也可以使用绝对路径。
反向代理是同过"proxy_pass"来实现的,我这里配置了百度的域名,保存好配置文件之后,执行reload命令重新加载新的配置文件,并访问:localhost:80


2018-11-04 12-07-24 的屏幕截图.png

可以看到已经是百度页面了,然后看下请求和响应头,根据状态吗推断是nginx帮我们做了重定向。以上就是最简单的一个反向代理的例子。

三、静态资源服务器

使用nginx作为静态资源服务器在上家公司遇到过,但是目前开发web服务器主要还是使用Apache,vanish缓存。还是在server子模块下,添加一个location的配置:

location /static/ {
    root /home/ypcfly/ypcfly;
    expires 1d;
}

这里我开始的时候遇到了一个问题,就是请求资源时报404错误,后来网上找了一些资料才算是搞明白是怎么回事了。主要是root和alias的区别,比如现在配置的root,如果请求localhost:80/static/images/111.jpg,实际对应的路径是/home/ypcfly/ypcfly/static/images/111.jpg,也就是说如果配置成root的话,文件的地址应该是配置的root路径 + location路径 + 请求资源名。如果配置的是alias的话配置稍有不同

location /static/ {
    alias /home/ypcfly/ypcfly/;
    expires 1d;
}

注意:alias必须以"/"结尾。如果我访问的依然是localhost:80/static/images/111.jpg,这时实际的路径应该是/home/ypcfly/ypcfly/images/111.jpg,也就是说配置成alias,文件地址是:配置的alias路径 + 请求资源名称。这个是官方文档的一点说明:https://nginx.org/en/docs/beginners_guide.html#static
expires指定的是过期时间
好了,我配置使用的是root,重新加载下配置文件,并访问localhost:80/static/images/golang-5.png,我本地图片保存的实际路径是:/home/ypcfly/ypcfly/static/images/golang-5.png。

2018-11-04 13-53-01 的屏幕截图.png

已经可以正常访问了,说明配置生效了。
今天只是从最简单的部分入手,如果要深入的学习,还是要多看文档,多实践,多总结才行。今天自己也是偷懒,从最简单的部分开始,关于nginx的其他知识点后期再学习。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容