- 安装依赖()
- · yum install gcc
- · yum install pcre-devel
- · yum install zlib zlib-devel
- · yum install openssl openssl-devel
- · //一键安装上面四个依赖
- · yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
- 下载nginx的tar包
- · //创建一个文件夹
- · cd /usr/local
- · mkdir nginx
- · cd nginx
- · //下载tar包
- . wget http://nginx.org/download/nginx-1.13.7.tar.gz
- .//解压tar包
- tar -zxvf nginx-1.13.7.tar.gz
- 安装nginx(如果configure报xx not found 就在后面加with-xx=路径)
- · //进入nginx目录
- · cd /usr/local/nginx
- · //执行配置命令 注意:--with-http_ssl_module 开启SSL模块,支持Https请求
- · ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --with-http_stub_status_module --with-http_ssl_module --with-openssl=/home/admin/openssl/openssl-1.1.0e
- · //执行make命令
- · make
- · //执行make install命令
- · make install
- Nginx常用命令
- //测试配置文件
- 安装路径下的/nginx/sbin/nginx -t
- //启动命令
- 安装路径下的/nginx/sbin/nginx
- //停止命令
- 安装路径下的/nginx/sbin/nginx -s stop 或者 : nginx -s quit
- //重启命令
- 安装路径下的/nginx/sbin/nginx -s reload
- //查看进程命令
- ps -ef | grep nginx
- //平滑重启
- kill -HUP Nginx主进程号
- 配置防火墙
- //打开防火墙文件
- sudo vim /etc/sysconfig/iptables
- //新增行 开放80端口
- -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
- //保存退
- //重启防火墙
- sudo service iptables restart
- Nginx虚拟域名配置及测试验证
- · //编辑nginx.conf
- · sudo vim /usr/local/nginx/conf/nginx.conf
- · //增加行
- · include vhost/*.conf
//保存退出 - · //在/usr/local/nginx/conf目录新建vhost文件夹
- · mkdir vhost
//创建每个域名的配置
sudo vim jimisun.com.conf
//节点中增加入响应的配置 端口转发 或者访问文件系统
- Nginx启动
- · //进入nginx安装目录
- · cd sbin
- · sudo ./nginx
- 测试访问
http://ip地址
注意:nginx 安装时候报错:make: *** No rule to make target `build', needed by `default'. Stop.
出现此种情况,是linux系统没有安装先决条件
1、GCC——GNU编译器集合(GCC可以使用默认包管理器的仓库(repositories)来安装,包管理器的选择依赖于你使用的Linux发布版本,包管理器有不同的实现:yum是基于Red Hat的发布版本;apt用于Debian和Ubuntu;yast用于SuSE Linux等等。)
RedHat中安装GCC:
yum install gcc
Ubuntu中安装GCC:
apt-get install gcc
2、PCRE库(Nginx编译需要PCRE(Perl Compatible Regular Expression),因为Nginx的Rewrite模块和HTTP核心模块会使用到PCRE正则表达式语法。这里需要安装两个安装包pcre和pcre-devel。第一个安装包提供编译版本的库,而第二个提供开发阶段的头文件和编译项目的源代码,这正是我们需要的理由。)
RedHat中安装PCRE:
yum install pcre pcre-devel
Ubuntu中安装PCRE:
apt-get install libpcre3 libpcre3-dev
3、zlib库(zlib库提供了开发人员的压缩算法,在Nginx的各种模块中需要使用gzip压缩。如同安装PCRE一样,同样需要安装库和它的源代码:zlib和zlib-devel。)
RedHat中安装zlib:
yum install zlib zlib-devel
Ubuntu中安装zlib:
apt-get install zlib1g zlib1g-dev
4、OpenSSL库(在Nginx中,如果服务器提供安全网页时则会用到OpenSSL库,我们需要安装库文件和它的开发安装包(openssl和openssl-devel)。)
RedHat中安装OpenSSL:
yum install openssl openssl-devel
Ubuntu中安装OpenSSL:(注:Ubuntu14.04的仓库中没有发现openssl-dev):
apt-get install openssl openssl-dev
The ngx_stream_upstream_module module (1.9.0) is used to define groups of servers that can be referenced by the proxy_pass directive.
Example Configuration
upstream backend {
hash $remote_addr consistent;
server backend1.example.com:12345 weight=5;
server backend2.example.com:12345;
server unix:/tmp/backend3;
server backup1.example.com:12345 backup;
server backup2.example.com:12345 backup;
}
server {
listen 12346;
proxy_pass backend;
}
例如:nginx.conf配置详解
http{
#虚拟主机1
server{
listen 80;
server_name www.nginx1.com;
location / {
root html;
index index.html index.htm;
}
}
#虚拟主机2
server{
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
}
}
这里server_name配置域名的时候,如果是本地测试,需要到windos下hosts文件里,把你的域名和ip添加进去(C:\Windows\System32\drivers\etc\hosts)
nginx支持三种类型的虚拟主机配置
- 1、基于ip的虚拟主机, (一块主机绑定多个ip地址)
server{
listen 192.168.1.1:80;
server_name localhost;
}
server{
listen 192.168.1.2:80;
server_name localhost;
}
-
- 2、基于域名的虚拟主机(servername)
#域名可以有多个,用空格隔开
server{
listen 80;
server_name www.nginx1.com www.nginx2.com;
}
server{
listen 80;
server_name www.nginx3.com;
}
-
- 3、基于端口的虚拟主机(listen不写ip的端口模式)
server{
listen 80;
server_name localhost;
}
server{
listen 81;
server_name localhost;
}
server下的location映射解析(官方中文文档:ngx_http_core_module)匹配规则:location [ = | ~ | ~* | ^~ ] uri { ... }
location URI {}:
对当前路径及子路径下的所有对象都生效;
location = URI {}:
精确匹配指定的路径(注意URL最好为具体路径),不包括子路径,因此,只对当前资源生效;
location ~ URI {}:
location ~* URI {}:
模式匹配URI,此处的URI可使用正则表达式,~区分字符大小写,~*不区 分字符大小写;
location ^~ URI {}:
不再检查正则表达式
优先级:= > ^~ > ~|~* > /|/dir/
举例:
location = / {
[ configuration A ]
}
location / {
[ configuration B ]
}
location /documents/ {
[ configuration C ]
}
location ^~ /images/ {
[ configuration D ]
}
location ~* \.(gif|jpg|jpeg)$ {
[ configuration E ]
}
解答:请求“/”匹配配置A, 请求“/index.html”匹配配置B, 请求“/documents/document.html”匹配配置C, 请求“/images/1.gif”匹配配置D, 请求“/documents/1.jpg”匹配配置E
location配置规则
1、“ =”前缀的指令严格匹配这个查询。如果找到,停止搜索。
2、所有剩下的常规字符串,匹配最精确的(一般最长的那个)。如果这个匹配使用^〜前缀,搜索停止。
3、正则表达式,在配置文件中是从上往下匹配的
4、如果第3条规则产生匹配的话,结果被使用。否则,如同从第2条规则被使用
特殊情况:
两种情况下,不需要继续匹配正则 location :
( 1 ) 当普通 location 前面指定了“ ^~ ”,特别告诉 Nginx 本条普 通 location 一旦匹配上,则不需要继续正则匹配。
( 2 ) 当普通location 恰好严格匹配上 ,不是最大前缀匹配,则不再继续匹配正则
另外nginx的反向代理、Tengine(Nginx的升级版)的健康检查 也用到了location知识,可以去看看
来源:https://www.cnblogs.com/lucas1024/p/9533262.html