nginx的使用
什么是Nginx?
Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡;支持高并发,并且消耗资源非常低,运行非常稳定。
由于nginx的优点,促使它快速成为使用广泛的http服务器,这里主要介绍一下nginx的使用及配置(ubuntu下)。
安装
1 | sudo apt install nginx |
nginx安装完后,默认时启动的,可以通过:1
ps -aux | grep nginx
来查看nginx是否启动。如果是下面这种情况即是启动:1
2
3
4
5
6root 881 0.0 0.0 140620 1512 ? Ss 20:12 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data 882 0.0 0.0 143240 6252 ? S 20:12 0:00 nginx: worker process
www-data 883 0.0 0.0 143240 6252 ? S 20:12 0:00 nginx: worker process
www-data 884 0.0 0.0 143240 6252 ? S 20:12 0:00 nginx: worker process
www-data 885 0.0 0.0 143240 6252 ? S 20:12 0:00 nginx: worker process
mistack+ 5146 0.0 0.0 21536 1088 pts/0 S+ 20:53 0:00 grep --color=auto nginx
如果没有启动,可通过下面命令来启动,已启动可重启、或停止:1
2
3sudo /etc/init.d/nginx start # 启动
sudo /etc/init.d/nginx restart # 重启
sudo /etc/init.d/nginx stop # 停止
打开浏览器,访问localhost,可以看到如下内容:
即nginx安装并启动成功。
配置
nginx默认配置文件在 /etc/nginx/conf.d/default.conf
。我们可以删除默认配置文件在该文件夹下新建一个 nginx.conf
的配置文件。由于nginx支持的功能很多,我们逐一配置,皆存放在nginx.conf
中。每次更改了配置信息,需要重新启动nginx服务器才能生效。
静态http服务器
ngin可以将服务器上的静态文件,通过http协议展现给客户端浏览器:
1
2
3
4
5
6 server {
listen 80; # 监听端口
location / {
root /usr/share/nginx/html; # 静态文件路径,也是默认路径
}
}
反向代理服务器
nginx可以实现反向代理,客户端可以访问nginx,然后由nginx去访问web服务器,把服务器返回的数据再返回给客户端。
1
2
3
4
5
6 server {
listen 80; # 监听端口
location / {
proxy_pass http://192.168.0.100:8000; # 应用服务器HTTP地址
}
}
负载均衡
当一个网站有很多访问量时,一台服务器往往会压力过大,容易崩溃;为了解决这个问题,nginx提供了负载均衡—-即配置多个相同的服务器分担压力,一旦其中一个挂掉,页不会影响用户的访问。
1
2
3
4
5
6
7
8
9
10
11 upstream app {
server 192.168.0.100:8000; # 服务器1
server 192.168.0.200:8000; # 服务器2
server 192.168.0.250:8000; # 服务器3
}
server {
listen 80;
location / {
proxy_pass http://app;
}
}
虚拟主机
有的网站,访问量不多,而要节约成本,需要将多个网站部署到同一台服务器上。这种技术叫做虚拟主机。
1
2
3
4
5
6
7
8
9
10
11
12
13
14 server {
listen 80;
server_name www.aaa.com; # www.aaa.com域名
location / {
proxy_pass http://localhost:8000;
}
}
server {
listen 80;
server_name www.bbb.com; # www.bbb.com域名
location / {
proxy_pass http://localhost:8001;
}
}
uwsgi
nginx本身不支持动态网页,但是它可以通过uwsgi来将请求扔给某些语言或框架处理(例如:PHP/Python/Perl等)
1
2
3
4
5
6
7
8
9
10
11
12
13 upstream app {
server localhost:5000;
}
server {
listen 80;
server_name 127.0.0.1;
location / {
include uwsgi_params;
uwsgi_read_timeout 3600;
uwsgi_pass app;
}
}
更多配置信息请见 Nginx中文文档