nginx入门及使用
Nginx作为高性能http和反向代理服务器被广泛使用,以下为入门Nginx的简单笔记。
Nginx三个比较重要的概念
-
反向代理
说到反向首先要想一下正向代理是什么,这个概念很简单,例如我打Apex等一些需要连接国外的服务器的游戏,这个时候就需要使用加速器,加速器通过代理服务器替我们向游戏的服务器发送数据,这就是正向代理。
简单来说,正向代理是代理客户端,反向代理是代理服务端,例如很多人都在用百度搜索,这是我们访问的都是同一个ip,但是百度并不只有一个服务器,在服务端存在代理服务器接受不同用户的请求,并转发给不同的服务器处理,这便是反向代理。
-
负载均衡
在用户较多的情况下,大量的请求一个服务器可能无法满足,由此便出现了服务器集群,由多个服务器处理请求。反向代理是负载均衡的基础,可以通过配置文件设置负载均衡的参数从而对请求进行适当的调节管控,分摊服务器压力,使服务器更加稳定。
-
动静分离
Nginx将请求分为静态请求和动态请求,对静态资源的访问根据配置文件中的路径返回对应资源,对动态请求则转发给真正的服务器处理(例如tomcat)。动静分离可以提高用户访问静态代码的速度,降低对后台应用访问。
Nginx常用命令
nginx //启动
nginx -s stop //停止
nginx -s quit //安全退出
nginx -s reload //重新加载
ps aux | grep nginx //查看nginx进程
注意:nginx.conf配置文件每次更改后都需要重新加载
nginx配置文件
Nginx配置文件主要分为三个部分:全局配置块、events块、http块。三个大模块又包含一些小模块。
http模块包含http配置、负载均衡配置、多个server块,一个server块又可以包含多个location块。在同一配置块中嵌套的配置块,各个之间不存在次序关系。
以下为简单的一个Nginx配置文件例子:
# 全局配置块
user www www;
worker_processes auto;
error_log /data/wwwlogs/error_nginx.log crit;
pid /var/run/nginx.pid;
worker_rlimit_nofile 51200;
# events块
events {
use epoll;
worker_connections 51200;
multi_accept on;
}
# http块
http {
# http配置
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 1024m;
client_body_buffer_size 10m;
sendfile on;
tcp_nopush on;
keepalive_timeout 120;
server_tokens off;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
fastcgi_intercept_errors on;
# 负载均衡
upstream gsyweb {
server 127.0.0.1:5000 weight=1; # 权重
server 127.0.0.1:5001 weight=2;
}
# server块
server {
listen 443 ssl;
server_name saltcookies.cn;
ssl_certificate /root/card/6385962_www.saltcookies.cn.pem;
ssl_certificate_key /root/card/6385962_www.saltcookies.cn.key;
location / {
root html;
index index.html index.htm;
# 反向代理
proxy_pass http://gsyweb;
}
#拦截静态资源
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)$ {
root static;
expires 30d;
}
}
server {
listen 80;
server_name saltcookies.cn;
# 重定向端口 80->443
rewrite ^(.*)$ https://$host$1 permanent;
}
}
}
参考链接
Nginx配置文件详解 - 程序员自由之路 - 博客园 (cnblogs.com)