环境
- MacOS Mojave 10.14
- Ubuntu18.04
- homebrew
1 安装
1.0 MacOS
1.0.1 安装
# 安装homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
# 安装Nginx
brew install nginx
1.0.2 Nginx路径
序号 | 路径 | 描述 |
---|---|---|
1 | /usr/local/nginx/nginx.conf | Nginx配置文件路径 |
2 | /usr/local/var/www | 服务器默认路径 |
3 | /usr/local/Cellar/nginx/1.13.12 | 安装路径 |
1.2 Ubuntu
1.2.1 方式1:直接安装
sudo apt-get install nginx
1.2.2 Nginx路径
序号 | 路径 | 描述 |
---|---|---|
1 | /usr/sbin/ngxin | 主程序 |
2 | /etc/nginx/nginx.conf | Nginx配置文件路径 |
3 | /usr/share/nginx/ | 静态文件 |
4 | /var/log/nginx | 日志 |
1.2.3 方式2:源码安装
安装依赖:
# 安装依赖gcc, g++
sudo apt-get install build-essential
sudo apt-get install libtool
# 依赖pcre
sudo apt-get install libpcre3 libpcre3-dev
# 依赖zlib
sudo apt-get install zlib1g-dev
# 依赖SSL
sudo apt-get install openssl
# 选择路径
cd /usr/
# 获取Nginx源
wget http://nginx.org/download/nginx-1.14.2.tar.gz
tar -zxvf nginx-1.14.2.tar.gz
cd nginx-1.14.2
# 配置
.configure --prefix=/usr/local/nginx
# 编译
make
# 安装
sudo make install
# 配置软连接
sudo ln -s /usr/local/niginx/sbin/nginx /usr/bin/nginx
# 通过nginx启动
nginx
2 配置
2.1 初级使用
2.1.0 版本
nginx -v
# 结果
nginx version: nginx/1.14.0 (Ubuntu)
2.1.2 检查配置文件是否有语法错误
- 命令
sudo nginx -t
- 结果
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
检查配置文件语法并获取配置文件路径。
2.1.3 启动
sudo nginx
2.1.4 访问
# 默认端口
http://localhost:8080
2.1.5 访问
2.1.5 修改端口
- /etc路径
cd /etc/nginx/
vim nginx.conf
server {
listen 8080;
}
- /usr路径
cd /usr/local/nginx/
vim nginx.conf
server {
listen 8080;
}
2.1.6 重载
sudo nginx -s reload
2.1.7 停止
sudo nginx -s stop
2.1.8 代理
server {
listen 8080 default_server;
server_name localhost;
location / {
# 通过localhost:8080代理baidu
proxy_pass https://www.baidu.com;
}
}
2.1.9 访问
http://localhost:8080/
跳转至,代理成功
https://www.baidu.com
2.2 location配置
2.2.1 功能
配置服务器或本地服务的代理地址;
模式说明:location model
序号 | 模式 | 说明 |
---|---|---|
1 | = | 精准匹配 |
2 | ^~ | uri以某个常规字符串开始 |
3 | ~ | 区分大小写的正则匹配 |
4 | ~* | 不区分大小写的正则匹配 |
5 | !~ | 区分大小写不匹配正则 |
6 | !~* | 不区分大小写不匹配正则 |
7 | / | 通用匹配,任何请求都会进行匹配 |
2.2.2 用例
server {
listen 8080 default_server;
server_name localhost;
location / {# 通用匹配
# 通过localhost:8080代理baidu
proxy_pass https://www.baidu.com;
}
location = /test {# 精准匹配
return 500;
}
location ^~ /test { # uri匹配
return 500;
}
location ~ /Test {# 区分大小写匹配
return 500;
}
location ~* /Test {# 不区分大小写匹配
return 500;
}
}
2.3 proxy_pass配置
功能:对代理的服务进行代理;
2.3.1 直接代理
server {
location / {
proxy_pass https://www.baidu.com;
}
}
2.3.2 负载均衡
2.3.2.1 backup(备份)
upstream mysvr {# 配置代理服务器小组^_^
server 127.0.0.1:8080;#服务器A,瞎写的,换成需要代理的
server 192.0.0.1:8090 backup;#服务器B,瞎写的,换成需要代理的
}
server {
location / {
proxy_pass http://mysvr;
}
}
工作模式:
Nginx代理两台服务器A和B,请求顺序为:AAAAA…,即服务器A正常情况下,只代理A,当服务器A宕机了,则启动服务器B,请求模式:BBBB…,一直代理B.
2.3.2.2 weight(加权)
upstream mysvr {# 配置代理服务器小组^_^
server 127.0.0.1:8080 weight=1;#服务器A,瞎写的,换成需要代理的
server 192.0.0.1:8090 weight=2;#服务器B,瞎写的,换成需要代理的
}
server {
location / {
proxy_pass http://mysvr;
}
}
工作模式:
Nginx代理两台服务器A和B,根据配置的权重分发给不同服务器不同数量的请求.如果不设置,默认为1.
以上配置的请求顺序为:ABBABB…
2.3.2.3 ip_hash
upstream mysvr {# 配置代理服务器小组^_^
server 127.0.0.1:8080;#服务器A,瞎写的,换成需要代理的
server 192.0.0.1:8090;#服务器B,瞎写的,换成需要代理的
ip_hash;
}
server {
location / {
proxy_pass http://mysvr;
}
}
工作模式:
相同的客户端IP请求相同的服务器.
3 url资源路径配置
通过location将主机文件配置为URL链接,需要将autoindex置为on。
http{
server {
listen 8000;
server_name localhost;
location / {
root "/home/xdq/test/remote_folder";
index index.html index.html index.php l.php;
autoindex on;
allow all;
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
}
error_page 500 502 503 504 /50x.html;
location = /50x.html{
root html;
}
}
}
访问:
http://ip:8000/
即定位到文件路径:/home/xdq/test/remote_folder
。
4 卸载Nginx
- 停止Nginx服务
sudo service nginx stop
- 卸载
# 卸载删除除了配置文件以外的所有文件
sudo apt-get remove nginx nginx-common
# 卸载所有东东,包括删除配置文件
sudo apt-get purge nginx nginx-common
# 在上面命令结束后执行,主要是卸载删除Nginx的不再被使用的依赖包
sudo apt-get autoremove
#卸载删除两个主要的包
sudo apt-get remove nginx-full nginx-common
[参考文献]
[1]https://yq.aliyun.com/articles/79214
[2]https://blog.csdn.net/zjuwwj/article/details/72773704
[3]https://www.cnblogs.com/knowledgesea/p/5199046.html