本文已同步到专业技术网站 www.sufaith.com, 该网站专一于先后端开发技术与经验分享, 包含Web开发、Nodejs、Python、Linux、IT资讯等板块.javascript
Nginx安装简单、配置简洁、启动快速便捷、支持热部署、支持 SSL、拥有高度模块化的设计。
php
Nginx的主要功能有:
css
/usr/local/nginx/sbin/nginx复制代码
/usr/local/nginx/sbin/nginx -s reopen复制代码
/usr/local/nginx/sbin/nginx -s reload复制代码
/usr/local/nginx/sbin/nginx -s stop复制代码
(1) 查看进程号html
ps -ef|grep nginx复制代码
kill -QUIT <进程号> 或 kill -TERM <进程号>复制代码
pkill -9 nginx复制代码
每一个server虚拟主机都定义了 location 指令,location 定义了对于指定的一组 URI 是如何匹配和进行处理的。vue
server {
listen 80;
server_name www.example.com;
location / {
root /usr/local/www;
index index.html;
}
}复制代码
server {
location 表达式 {
}
}复制代码
(2) location表达式的类型
java
(3) location表达式的优先级
nginx
(1) 语法
web
server {
rewrite 规则 定向路径 重写类型;
}复制代码
(2) 示例
正则表达式
server {
listen 80;
server_name www.aaa.com;
location / {
rewrite ^/$ www.bbb.com permanent ;
}
}复制代码
(1) 语法算法
try_files file1 files2 ... uri复制代码
try_files $uri $uri/ /index.php?q=$uri&$args;复制代码
(2) 示例
当访问:www.example.com/test 时会依次查找,若 1.html,2.html 都不存在,最终返回 3.html
server {
listen 80;
server_name www.example.com;
root html;
index index.html;
location /test {
try_files /1.html /2.html /3.html;
}
}复制代码
当访问:www.example.com/test 时会依次查找,若 1.html,2.html 都不存在,则跳转到命名为abc的location
server {
listen 80;
server_name www.example.com;
root html;
index index.html;
location /test {
try_files /1.html /2.html @abc;
}
location @abc{
rewrite ^/(.*)$ http://www.example2.com;
}
}复制代码
location / {
# URL 匹配不到任何静态资源,返回同一个 index.html 页面,这个页面就是你 app 依赖的页面。
try_files $uri $uri/ /index.html;
}复制代码
server {
# 开启gzip 压缩
gzip on;
# 设置gzip所需的http协议最低版本 (HTTP/1.1, HTTP/1.0)
gzip_http_version 1.1;
# 设置压缩级别(1-9), 值越大压缩率越高,同时消耗cpu资源也越多,建议设置在4左右
gzip_comp_level 4;
# 设置压缩的最小字节数, 页面Content-Length获取
gzip_min_length 1000;
# 设置压缩文件的类型 (text/html), 不建议压缩图片(如jpg、png自己已压缩)
gzip_types text/plain application/javascript text/css;
#配置禁用gzip条件,支持正则。此处表示ie6及如下不启用gzip(由于ie低版本不支持)
gzip_disable "MSIE [1-6]\.";
}复制代码
http {
# 配置共享会话缓存大小,视站点访问状况设定
ssl_session_cache shared:SSL:10m;
# 配置会话超时时间
ssl_session_timeout 10m;
server {
listen 443;
server_name www.example.com;
ssl on;
# 设置长链接
keepalive_timeout 70;
# HSTS策略
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
# 证书文件
ssl_certificate www.example.com.crt;
# 私钥文件
ssl_certificate_key www.example.com.key;
# 优先采起服务器算法
ssl_prefer_server_ciphers on;
# 指定SSL协议
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# 定义算法
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
# 减小点击劫持
add_header X-Frame-Options DENY;
# 禁止服务器自动解析资源类型
add_header X-Content-Type-Options nosniff;
# 防XSS攻擊
add_header X-Xss-Protection 1;
}
}复制代码
server {
listen 80;
server_name www.example.com;
root html;
index index.html;
location /test {
# 请求host
proxy_set_header Host $http_host;
# 请求ip
proxy_set_header X-Real-IP $remote_addr;
# 请求协议
proxy_set_header X-Scheme $scheme;
# 代理服务器
proxy_pass http://localhost:3000;
}
}复制代码
(1) upstream模块
一个最基本的upstream模块以下:
#动态服务器组, server是后端服务器,my_server是自定义的服务器组名称。
upstream my_server {
server localhost:8001;
server localhost:8002;
server localhost:8003;
}复制代码
在upstream模块配置完成后,要让指定的访问反向代理到服务器组。
server {
listen 80;
server_name www.example.com;
root html;
index index.html;
location / {
# 反向代理到定义好的服务器组my_server
proxy_pass my_server;
}
}复制代码
http {
upstream my_server {
server localhost:8001;
server localhost:8002;
server localhost:8003;
}
server {
listen 80;
server_name www.example.com;
root html;
index index.html;
location / {
# 反向代理到定义好的服务器组my_server
proxy_pass my_server;
}
}
}复制代码
(1) 轮询(默认方式)
表示每一个请求按时间顺序逐一分配到不一样的后端服务器。
upstream my_server {
server localhost:8001;
server localhost:8002;
}复制代码
表示在轮询策略的基础上指定轮询的服务器的权重,默认为1,权重越高分配到须要处理的请求越多。
upstream my_server {
server localhost:8001 weight=1;
server localhost:8002 weight=2;
}复制代码
表示指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每一个访客都固定访问一个后端服务器,能够解决session不能跨服务器的问题。
upstream my_server {
ip_hash;
server localhost:8001;
server localhost:8002;
}复制代码
(4) least_conn
upstream my_server {
least_conn;
server localhost:8001;
server localhost:8002;
}复制代码
表示当前的server暂时不参与负载均衡。
upstream my_server {
server localhost:8001 down;
server localhost:8002;
server localhost:8003;
}复制代码
表示预留的备份机器。当其余全部的非backup机器出现故障或者忙的时候,才会请求backup机器,因 此这台机器的压力最轻。
upstream my_server {
server localhost:8001 backup;
server localhost:8002;
server localhost:8003;
}复制代码