Nginx是一个俄罗斯开发的高性能HTTP服务器和反向代理服务器,功能丰富、性能强悍、运行稳定、应用广泛,完全使用C语言编写,可运行于各种Unix Like OS,并有Windows移植版本(不推荐用于生产环境)。
安装
在Ubuntu中,可以直接使用sudo apt-get install nginx
命令安装nginx,安装之后,默认的配置文件保存在 /etc/nginx
文件夹内,默认提供http服务的目录位置在 /usr/local/nginx/html
。
配置
nginx的主配置文件是:nginx.conf
|
|
virutal host 配置
nginx作为反向代理服务器,可以根据域名不同将用户的请求分发给不同的后端服务器,配置文件放置在site-available目录中,如果要启用某一个特定的配置文件,需要在site-enabled目录中建立一个对应的软连接。
我们想要配置一个api.example.com
的虚拟服务器,将特定/api路径下的所有请求转发到后端的api服务器,其他请求直接访问对应的静态文件目录,同时支持HTTP和HTTPS访问,配置如下
|
|
将以上配置保存为 /etc/nginx/sites-available 目录中的 api.example 文件,然后进入site-enabled目录,执行 ln -s ../sites-available/api.example api.example
在sites-enabled中建立其对应的软连接,然后执行 service nginx reload
重新加载nginx的配置,即可生效。
nginx配置强制跳转HTTPS
很多网站都要求所有HTTP的访问都强制跳转到HTTPS,其配置方法有很多种,可以按照以下配置思路:
我们有一个仅支持HTTPS访问的配置好的virtual host:
|
|
新建一个配置文件www.redirect:
|
|
在sites-enabled 目录中为以上配置文件设置一个软链接,然后reload nginx即可。
其思路主要是利用了nginx的404页面,我们为http server配置了一个不存在的路径,这样在访问http服务器的时候,其index.html文件是不存在的,这样nginx就会给用户返回特定的404 Not Found 页面,我们将对应的HTTPS链接指定为其对应的404页面,这样在访问http server的时候,就会被自动redirect到相应的HTTPS页面了。