Nginx 入门和一些搭建时遇到的问题

第一次写这种技术性的文章,有哪些说的不好或者不对的地方,麻烦各位大大指点了...


因为公司需要开发一个高并发的项目,所以我就开始研究这个Nginx服务器。后来因为老出问题,通过Nginx一直访问不到服务器,项目紧急(因为公司只有我一个搞后台的....),所以暂时就放了一段时间。

后来公司招了个写H5的前端,在通过ajax访问服务器的时候老出现跨域问题,type改成jsonp之后又出现了一个Unknown token的错误。后来前端问了一下以前的同事,说是他们在测试的时候后台都会帮忙搭一个Nginx服务器,这样ajax访问的就是本地的Nginx服务器,再通过Nginx进行转发,将请求发送给真正的后台服务器,这样就避免的跨域的问题。于是我就开始了Nginx的搭建.....


看了一些别人的文章和博客,终于的入了个门,就把我搭建Nginx服务器中过程记录一下吧。


先了解一下什么是Nginx

(下面的内容来自百度百科)

Nginx("engine x") 是一个高性能的HTTP反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

Nginx是一款轻量级Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东新浪网易腾讯淘宝等。


说到反向代理,tomcat结合nginx使用小结这篇文章做了很好的解释

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器

这里讲得很直白。反向代理方式实际上就是一台负责转发的代理服务器,貌似充当了真正服务器的功能,但实际上并不是,代理服务器只是充当了转发的作用,并且从真正的服务器那里取得返回的数据。这样说,其实nginx完成的就是这样的工作。我们让nginx监听一个端口,譬如80端口,但实际上我们转发给在8080端口的tomcat,由它来处理真正的请求,当请求完成后,tomcat返回,但数据此时没直接返回,而是直接给nginx,由nginx进行返回,这里,我们会以为是nginx进行了处理,但实际上进行处理的是tomcat。


我现在用的是nginx-1.6.1版本的,下面附上链接

下载地址:http://nginx.org/en/download.html

当下载完成以后,解压到文件夹下,直接运行nginx.exe,就可以在任务管理器中看到Nginx服务已经启动了



附上一些Nginx的命令,在Nginx目录下shift+右键,在此处打开命令窗口,就可以按照需要输入以下命令

也可在cmd中通过命令进行启停启动nginx:

start nginx                      //运行nginx

nginx -s stop          // 停止nginx

nginx -s reload       // 重新加载配置文件(如修改配置文件后,可通过该命令重新加载)

nginx -s quit          // 退出nginx

nginx -v                 //可查nginx版本


很多文章中写到运行了之后直接在浏览器中输入localhost或者127.0.0.1就会直接弹出Nginx欢迎页,但是我的就是一直没有弹出了。这个时候打开\nginx-1.6.3\conf\nginx.conf文件,看到


listen:表示当前的代理服务器监听的端口,默认的是监听80端口。注意,如果我们配置了多个server,这个listen要配置不一样,不然就不能确定转到哪里去了。

现在listen监听的是80端口,我也尝试过在浏览器中输入127.0.0.1:80,结果也是一样,没有产生任何变化。

后来我修改了端口号,将80改为8080(这个端口号不要和tomcat服务器的端口号冲突了,否则要么是Nginx启动不了,要么tomcat启动不了),终于是在浏览器中输入127.0.0.1:8080之后,终于迎来了久违的Nginx欢迎页...  

Nginx中主要的配置就在nginx.conf文件当中,主要的一些属性的解释就在下面了

listen:表示当前的代理服务器监听的端口,默认的是监听80端口。注意,如果我们配置了多个server,这个listen要配置不一样,不然就不能确定转到哪里去了。

server_name:表示监听到之后需要转到哪里去,这时我们直接转到本地,这时是直接到nginx文件夹内。(应该是访问Nginx的ip,不包含端口号,listen是访问对应的端口号)

location:表示匹配的路径,这时配置了/表示所有请求都被匹配到这里

root:里面配置了root这时表示当匹配这个请求的路径时,将会在这个文件夹内寻找相应的文件,这里对我们之后的静态文件伺服很有用。

index:当没有指定主页时,默认会选择这个指定的文件,它可以有多个,并按顺序来加载,如果第一个不存在,则找第二个,依此类推。


在了解这些属性后,就可以对Nginx服务器进行配置了

location这个属性上面也说了,是对路径的匹配和过滤比如

location ~ \.(html|js|css|png|gif)$ {

          root D:/software/developerTools/server/apache-tomcat-7.0.8/webapps/ROOT;

}

这个是当后缀为.html、.css、.js、.png、.gif结尾的请求,会在root路径中去找对应的资源


那么如何将它和tomcat关联起来呢?看下面的配置

location / {

          proxy_pass http://localhost:8081;

}

这个配置是匹配所有的url,当碰到url请求Nginx服务器的时候就会进入到这个配置当中。

proxy_pass,它表示代理路径,相当于转发,转发到指定url,之前将server_name和listen分别改为了127.0.0.1和8080,在进行这个配置之后,在浏览器中输入127.0.0.1:8080就会弹出tomcat的主页了。


但是这里有个问题,当配置第一个location ~ \.(html|js|css|png|gif)$之后,在进行这个代理路径的配置,在请求127.0.0.1:8080会出现没有图片没有js没有css的一个"裸"网页。


如果还有的话,说明是缓存问题。。。清一下缓存就行了,然后nginx -s reload就可以了

因为请求的url中会把关于这个网页所有相关的css,js,图片资源都会请求下来,但是这个时候你进行location ~ \.(html|js|css|png|gif)$ 文件资源路径的匹配,所以它会在这个路径下去找资源,这自然就是找不到的,所以,就会出现一个"裸"的页面...这个一定要注意了。


还有,任何开发工具或者项目,万万不要放到中文路径下(有经验的开发者肯定会注意这一点的),在我把Nginx搭建好了之后,发给前端的同事,结果死活启动不了,他装得win10的系统,我对win10又有点偏见,总觉得是系统的问题,后来网上查了一下,上面就说要么端口号被占用了,要么放在了中文路径下,我问前端的同事Nginx放哪了,一看路径.............

结果换了个路径,项目成功启动。同事的ajax的跨域问题也解决了。


因为是第一次写,可能写的不好也不够仔细,有什么不懂的地方,可以问我,反正我也是才入门,可能也不是很懂,但是可以多交流交流嘛,人多力量大喽.........

最后推荐一些对我搭建Nginx有帮助的文章

tomcat结合nginx使用小结

Nginx搭建图片服务器

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,656评论 18 139
  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,674评论 24 1,002
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,246评论 11 349
  • 上一篇《WEB请求处理一:浏览器请求发起处理》,我们讲述了浏览器端请求发起过程,通过DNS域名解析服务器IP,并建...
    七寸知架构阅读 81,003评论 21 356
  • 姓名:周立 zhou li 公司:宁波大发化纤有限公司 【日精进打卡第37天】 【知~学习】 (六项精进)大纲背...
    周立zhouli阅读 117评论 0 0