为了日后方便,这里记录一下nginx的常用配置,此处nginx使用docker 安装并配置数据卷:
docker run -id --name c_nginx --net host -v ~/nginx/conf.d:/etc/nginx/conf.d -v ~/nginx/html:/usr/share/nginx/html nginx
1. 绑定多个端口
与tomact服务器不同,nginx可以同时开启多个端口,nginx绑定多个端口的方法如下:
-
进入
conf.d
目录:cd ~/nginx/conf.d/
-
修改配置文件(配置文件可以任意定义为
*.conf
的形式,默认的default.conf
被我删了)
vi port.conf
添加如下内容:
server {
listen 80;
listen [::]:80;
server_name localhost;
location / {
root /usr/share/nginx/html/test80;
index index.html index.htm;
}
}
server {
listen 81;
listen [::]:81;
server_name localhost;
location / {
root /usr/share/nginx/html/test81;
index index.html index.htm;
}
}
绑定域名
一个ip地址同时绑定多个域名,访问时根据域名确定访问哪一个静态资源:
server {
listen 80;
listen [::]:80;
server_name my.test80.com;
location / {
root /usr/share/nginx/html/test80;
index index.html index.htm;
}
}
server {
listen 80;
listen [::]:80;
server_name my.test81.com;
location / {
root /usr/share/nginx/html/test81;
index index.html index.htm;
}
}
这里的域名是自定义的假域名,需要修改host文件,使访问不经过DNS服务器:
192.168.162.128 my.test80.com 192.168.162.128 my.test81.com
这时浏览器访问http://my.test80.com 会访问test80
目录里面的资源,浏览器访问http://my.test81.com 会访问test81
目录里面的资源.
反向代理
upstream my-baidu {
server 192.168.162.128:81;
}
server {
listen 80;
listen [::]:80;
server_name my.proxy.com;
location / {
proxy_pass http://my-baidu;
}
}
host文件添加:
192.168.162.128 my.proxy.com
这时浏览器访问http://my.proxy.com 会被反向代理到81端口
负载均衡
只需在反向代理的基础上再添加一些服务器地址,nginx便可自动实现负载均衡:
upstream my-baidu {
server 192.168.162.128:81;
server 192.168.162.128:82 weight=2; #权重为可选项
server 192.168.162.128:83;
}
server {
listen 80;
listen [::]:80;
server_name my.proxy.com;
location / {
proxy_pass http://my-baidu;
}
}
此时访问http://my.proxy.com 会随机的访问81,82,83端口,其中82端口出现的概率是其他端口的两倍.