文章目录
Nginx是一个强大的轻量级的高性能网页服务器、反向代理服务器和电子邮件代理服务器。作为负载均衡服务器,Nginx可以在内部直接支持Rails和PHP程序对外进行服务,也可以支持作为HTTP代理服务器对外进行服务。
基本知识
在介绍下面的使用Nginx进行跨域之前,需要对Nginx的一些基本知识有所了解。
安装
Mac系统下
需要借助homebrew
来安装,可以通过brew -v
来查看是否安装了homebrew,如果没有安装,则通过终端命令安装
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安装成功就可以直接使用homebrew
来安装Nginx:
brew install nginx
安装完成后,主页的index
文件在/usr/local/var/www
目录下,对应的配置文件在/usr/local/etc/nginx/nginx.conf
目录下
然后使用nginx
命令就可以启动Nginx,默认8080
端口
基本命令
使用Nginx的命令需要首先定位到nginx.exe
所在的目录(Windows系统)
Nginx的一些基本命令:
# 查看版本
nginx -v
# 启动
nginx
# 停止
nginx -s stop # 快速停止Nginx,可能并不保存相关信息
nginx -s quit # quit完整有序的停止Nginx,并保存相关信息。
# 重新启动
nginx -s reload # 当配置信息修改,需要重新载入这些配置时使用此命令
# 重新打开日志文件
nginx -s reope
# 查看配置文件路径及是否调用有效
nginx -t
配置文件
Nginx的功能都是通过nginx.conf
配置文件来实现的,一个服务器上可能会有多个配置文件,可以执行nginx -t
来查看配置文件的路径以及是否调用有效。
Nginx的配置文件主要分为四部分:
main
,全局设置,设置的指令将影响其他所有部分的设置server
,主机设置,用于指定虚拟主机域名、IP和端口upstream
,上游服务器设置,主要为反向代理、负载均衡相关配置location
,URL匹配特定设置
他们之间,location
继承server
,server
继承main
,upstream
既不会继承指令也不会被继承。
关于location
Nginx配置文件中的loaction
是主机访问的地址,在Nginx服务器做一个代理,转发到location
中配置的地址。它有如下的匹配指令:
=
表示进行普通字符精确匹配,只有请求的URL路径与后面的字符串完全相等时,才会命中~
表示执行一个正则匹配,区分大小写~*
表示执行一个正则匹配,不区分大小写^~
表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录@
定义一个命名的location
,使用在内部定向时,例如error_page
,try_files
loaction
匹配的优先级(与loaction
在配置文件中的顺序无关)
=
精确匹配会第一个被处理。如果发现精确匹配,Nginx停止搜索其他匹配。- 普通字符匹配,正则表达式规则和长的块规则将被优先和查询匹配,也就是说如果该项匹配还需去看有没有正则表达式匹配和更长的匹配。
^~
则只匹配该规则,Nginx停止搜索其他匹配,否则Nginx会继续处理其他loaction
指令。- 最后匹配理带有
~
和~*
的指令,如果找到相应的匹配,则Nginx停止搜索其他匹配;当没有正则表达式或者没有正则表达式被匹配的情况下,那么匹配程度最高的逐字匹配指令会被使用。
location = / {
# 只匹配"/".
[ configuration A ]
}
location / {
# 匹配任何请求,因为所有请求都是以"/"开始
# 但是更长字符匹配或者正则表达式匹配会优先匹配
[ configuration B ]
}
location ^~ /images/ {