Ubuntu安装配置nginx

前言

最近接手了团队以前的日志项目,说白了,刚开始的时候内心仍是挺没底的,教程还没学明白呢就直接上项目,多少仍是有点忐忑的,可是后来发现也还行吧,要写的东西都是教程里的,正好借此机会实践一下,巩固一下。前端

CORS

以前教程学的先后台数据交互直接经过浏览器,可是因为浏览器的同源策略,还要对CORS(跨域资源共享 Cross-Origin Resource Sharing)进行配置nginx

跨域资源共享( CORS) 是一种机制,它使用额外的 HTTP 头来告诉浏览器  让运行在一个 origin (domain) 上的Web应用被准许访问来自不一样源服务器上的指定的资源。当一个资源从与该资源自己所在的服务器 不一样的域、协议或端口请求一个资源时,资源会发起一个 跨域 HTTP 请求

好比,站点 http://domain-a.com 的某 HTML 页面经过 <img> 的 src 请求 http://domain-b.com/image.jpg。网络上的许多页面都会加载来自不一样域的CSS样式表,图像和脚本等资源。web

出于安全缘由,浏览器限制从脚本内发起的跨源HTTP请求。 例如,XMLHttpRequest和Fetch API遵循同源策略。 这意味着使用这些API的Web应用程序只能从加载应用程序的同一个域请求HTTP资源,除非响应报文包含了正确CORS响应头。数据库

  (译者注:这段描述不许确,并不必定是浏览器限制了发起跨站请求,也多是跨站请求能够正常发起,可是返回结果被浏览器拦截了。)ubuntu

固然了,它确定是有一些弊端的:vim

咱们知道,所谓预检请求,都是经过OPTIONS请求方法发出的。须要注意的是,预检请求不会携带任何的请求参数,因此你不须要担忧数据库会被修改两次。服务器须要作的就是,在全局拦截器中,设置Access-Control-Allow系列跨域头。

问题就出在这个跨域头这里。须要设置的跨域头主要有三个:
Access-Control-Allow-Origin: 容许访问的域名
Access-Control-Allow-Methods: 容许使用的请求方法
Access-Control-Allow-Headers: 容许使用的请求头api

第一个,没问题,很合理。由于我确实要限制非法网站过来的请求
第二个,也没毛病。由于确实存在,某些controller只支持特定的HTTP方法。Restful接口中这种限制体现得尤其明显。跨域

问题出在第三个
第三个,就很是皮了。这个是用来告诉前端,我容许你接下来的请求附带哪些请求头。或许换个说法更容易暴露它的不合理,就是,我服务器支持哪些请求头。须要注意的是,这里必须把全部支持的请求头都填上。天呐,要知道,全部的HTTP请求头,基本的,常见的,不常见的,加起来有几十个呢。若是服务器要所有支持,就要把全部的请求头都填进去。这将是很是枯燥,并且没必要要的工做。浏览器

image.png
这是教程学习过程当中关于跨域请求的一些配置,感受确实挺费劲的,并且有时候报一些关于跨域的错误,小白表示根本就看不懂啊。安全

nginx

后来了解到,通常生产项目都会用到nginx去解决先后台数据交互的问题,难怪以前访问某些网站会出现nginx的字样。
7c1ed21b0ef41bd5b81f656459da81cb38db3dd5.png
什么是nginx呢?

Nginx (engine x) 是一个高性能的 HTTP反向代理web服务器,同时也提供了IMAP/POP3/SMTP 服务。Nginx是由伊戈尔·赛索耶夫为 俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。

其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

Nginx是一款轻量级Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特色是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东新浪网易腾讯淘宝等。

安装

自从使用上ubuntu以后,发现Windows真的太难用了,虽然说用鼠标点击比命令行快捷,可是一行命令行就能解决的问题,鼠标不知道要点多久。
nginx在Ubuntu上的安装和大多数软件同样,一行命令解决问题:

sudo apt-get install nginx

安装好后还要检验一下,通常是经过版本号进行检验:

nginx -v

image.png
若是有版本号就说明安装好了。

配置

nginx的配置也是很简单的,前提是你要知道nginx安装的目录以及项目的目录,通常nginx都是安装在根目录下的/etc文件夹里(可使用 nginx -T查看具体安装目录):
image.png
而后进入nginx文件夹,打开nginx.conf文件,能够选择用vim打开,毕竟比较方便:

sudo vim nginx.conf

找到下面这两行代码所在的地方,而后能够在中间添加项目中nginx.conf所在的路径。
image.png

image.png
像上面这样的就能够这样写:

include /etc/nginx/mime.types;
    include /home/jincheng/log/nginx.conf;
    default_type application/octet-stream;

(只是添加了中间一行)

修改完成以后保存,而后执行:

sudo nginx -t

查看配置文件是否生效

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

当出现ok和successful字样时,说明生效了,而后执行:

sudo nginx -s reload

从新启动nginx

应用nginx

如何肯定nginx是否生效了呢,首先打开前台,启动项目,
image.png
前台能够由4200端口访问到,
image.png
而后把端口号改为8014再访问一下(不必定都是8014,由项目配置文件决定)
image.png
而后打开后台,访问一个接口
image.png
修改路由为8014/api/client再次访问:
image.png
能够肯定nginx生效,在之后的使用中,只需使用

sudo /etc/init.d/nginx start

便可启动nginx。

Ubuntu安装以后的文件结构大体为:

    1)全部的配置文件都在/etc/nginx下,而且每一个虚拟主机已经安排在了/etc/nginx/sites-available下

    2)程序文件在/usr/sbin/nginx

    3)日志放在了/var/log/nginx中

    4)并已经在/etc/init.d/下建立了启动脚本nginx

    5)默认的虚拟主机的目录设置在了/var/www/nginx-default (有的版本默认的虚拟主机的目录设置在了/var/www, 请参考/etc/nginx/sites-available里的配置)

详解

IMG_20200314_105824.png
查看项目的nginx.conf文件,有几个重要的信息,listen 8014,监听8014端口,当路由含有/api时,向8114端口发送请求或数据,不然向4200端口发送,这样一来便实现了先后台数据的转发,而此时数据转发都是经过8014端口进行,浏览器认为是同源的,因此不存在跨域问题。

总结

不得不说,nginx真的挺神奇的,何况那么多知名互联网公司都在用,确定是很成功的,但愿在之后的应用中能对它了解更多吧。

相关文章
相关标签/搜索