1. 安装nginx
apt-get update
apt-get install nginx
2. 配置侦听端口
/etc/nginx/site-available/default -- 修改server的侦听端口80为其它端口,否则因为80端口已经被apache占用,nginx启动会失败
3. 配置优化nginx.conf文件
/etc/nginx/nginx.conf
# ubuntu 14.04上, worker_processes值为cpu数的一半; Ubuntu 16.04上为cpu数
worker_processes auto;
# 连接数上线,设置到65535 (设置到ulimit -n命令获取的一致)
worker_rlimit_nofile 65535;
events {
#==worker进程同时打开的最大连接数,这里设置到65535,有文章说,生产环境,至少要到10K。
worker_connections 65535;
#==告诉nginx收到一个新链接通知后接受尽可能多的链接
multi_accept on;
#==设置用于复用客户端线程的轮训方法
use epoll;
}
4. 负载均衡配置
a. /etc/nginx/site-available/default 里,设置好侦听的端口(见2#里的端口列表);配置ServerName,如serv1,serv2等
location / {
proxy_pass http://ServerName;
}
#开启nginx状态监控
location /status {
stub_status on;
access_log off;
}
b. /etc/nginx/nginx.conf 里,增加upstream配置,其中的ServerName与default里的对应。
# 注意:本机IP,不要使用“localhost”。hosts文件里,localhost被映射::1,这导致URL错误
upstream ServerName {
server 127.0.0.1:8103;
server 127.0.0.1:8108;
}
c. 可以在一个nginx里配置多个load balance。只要设置对应的server和upstream节点就可以了
apt-get update
apt-get install nginx
2. 配置侦听端口
/etc/nginx/site-available/default -- 修改server的侦听端口80为其它端口,否则因为80端口已经被apache占用,nginx启动会失败
3. 配置优化nginx.conf文件
/etc/nginx/nginx.conf
# ubuntu 14.04上, worker_processes值为cpu数的一半; Ubuntu 16.04上为cpu数
worker_processes auto;
# 连接数上线,设置到65535 (设置到ulimit -n命令获取的一致)
worker_rlimit_nofile 65535;
events {
#==worker进程同时打开的最大连接数,这里设置到65535,有文章说,生产环境,至少要到10K。
worker_connections 65535;
#==告诉nginx收到一个新链接通知后接受尽可能多的链接
multi_accept on;
#==设置用于复用客户端线程的轮训方法
use epoll;
}
4. 负载均衡配置
a. /etc/nginx/site-available/default 里,设置好侦听的端口(见2#里的端口列表);配置ServerName,如serv1,serv2等
location / {
proxy_pass http://ServerName;
}
#开启nginx状态监控
location /status {
stub_status on;
access_log off;
}
b. /etc/nginx/nginx.conf 里,增加upstream配置,其中的ServerName与default里的对应。
# 注意:本机IP,不要使用“localhost”。hosts文件里,localhost被映射::1,这导致URL错误
upstream ServerName {
server 127.0.0.1:8103;
server 127.0.0.1:8108;
}
c. 可以在一个nginx里配置多个load balance。只要设置对应的server和upstream节点就可以了
5. 多端口侦听
配置多个server节点,每个server节点侦听不同端口即可。
6. 同一端口,不同site配置
可以通过server里的location来配置. 寻址时,最后匹配 / 的location
location /servername {...} #访问URL为: http://xxxx:port/servername/xxxxxx
location / {...} # 访问URL为: http://xxxx:port/...
7. 代理和负载, nginx可以做比较复杂的转发. 可以通过配置location, 将大量的站点集成到一个域名中. 实践使用中, 尽量简化映射关系. 不要使用太复杂的映射.
可以使用多端口监控, 简化映射(针对内部使用站点)
location的设置,尽量不要使用复杂的正则表达式. 复杂意外着容易出错, 增加维护成本和学习成本. 通过一些其它手段,简化映射配置.