实现正向代理、反向代理、负载均衡、Nginx 缓存、动静分离和高可用 Nginx 6种功能
1.当让是下载安装了
官方地址: http://nginx.org/en/download.html
wget下载
下载:wget http://nginx.org/download/nginx-1.14.0.tar.gz
解压:tar -zxvf nginx-1.14.0.tar.gz
cd nginx-1.14.0
执行默认安装:./configure && make && make install
之后 nginx 运行文件 就会被安装在 /usr/local/nginx 下
2.nginx常用命令
cd /usr/local/nginx/sbin/ #进入目录
./nginx #启动
./nginx -s stop #停止
./nginx -s quit #安全退出
./nginx -s reload #重新加载配置文件
./nginx -t #验证配置文件是否正确
./nginx -reopen #重新打开日志文件
ps -ef|grep nginx #查看nginx进程
3.动静分离
#采用alias代理的方式
location /old {
# 别名转到/home/old_www/路径下同时忽略url中的old
alias /home/old_www/;
}
#采用正则表达式的方式
location ~ \.(js|css|png) {
# 指定静态文件目录
root /home/www/static/;
}
4.防盗链,配置在location中
location / {
# 转到/home/www/路径
root /home/www/;
# 映射到index.html
index index.html;
# 防盗链 判断引用页是否来源于*.codinganhour.com域名
valid_referers none blocked *.codinganhour.com;
if ($invalid_referer) {
return 403;
}
}
5.黑名单,配置在http下
http {
# 黑名单
# 封禁指定IP
# deny 192.168.0.1;
# allow 192.168.0.1;
# 开放指定IP 段
# allow 192.168.0.0/24;
# 封禁所有
# deny all;
# 开放所有
# allow all;
# 引入 黑名单文件
# include black.ip;
6.nginx.config全部配置
# user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
# {}前的叫做 语句块,{ 前一定要有空格,否则错误,同时注意一定要在结尾加;
# 事件语句块
events {
# 配置属性
# 属性名 属性值:属性值可以有多个,如 默认location中index index.html index.htm;
# 当前最大连接数
worker_connections 1024;
}
http {
# 黑名单
# 封禁指定IP
# deny 192.168.0.1;
# allow 192.168.0.1;
# 开放指定IP 段
# allow 192.168.0.0/24;
# 封禁所有
# deny all;
# 开放所有
# allow all;
# 引入 黑名单文件
# include black.ip;
# 把mine.types中的内容映射到当前文件中
include mime.types;
# 响应类型
default_type application/octet-stream;
# 日志输出格式
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
# 访问日志
#access_log logs/access.log main;
# 开启sendfile配置来提高文件的传输速率,跳过一些传输过程
sendfile on;
# 只有在使用sendfile启用的情况下才能被允许,它可以配置一次发送数据包的大小。
# 也就是说,数据包累积到一定大小后就发送。
#tcp_nopush on;
# 长链接最大超时时间;
keepalive_timeout 65;
# gzip压缩
#gzip on;
# 配置的具体站点
# 如果站点的listen与server_name
# 都满足
# 则优先匹配最大符合原则,左匹配大于右匹配,都相同的情况先匹配前面的
#
# 例如一个server_name是www.baidu.com,另一个是*.baidu.com则优先匹配www.baidu.com站点
# 例如一个server_name是*.baidu.com,另一个是www.baidu.*则优先匹配*.baidu.com站点
# 都不满足
# 则匹配第一个站点,或者监听端口后有default的站点
# listen 80 default;
server {
# 监听的端口,不同的站点可以配置相同的端口
listen 80;
# 站点的名称,可以配置多个中间用空格相隔,支持通配符的方式例如:*.baidu.com或www.baidu.*
server_name localhost;
# 代理的字符编码
#charset koi8-r;
#access_log logs/host.access.log main;
# 针对具体的目录划分,前缀匹配,正则匹配 =匹配
# location的优先级如下
# 1.=表示把URI作为字符串,以便与参数中的uri做完全匹配。
# 2./ 基于uri目录匹配
# 3.~表示正则匹配URI时是字母大小写敏感的。
# 4.~*表示正则匹配URI时忽略字母大小写问题。
# 5.^~表示正则匹配URI时只需要其前半部分与uri参数匹配即可。
# 匹配优先原则
#1.精确匹配优先 =
#2.正则匹配优先 ^~
#3.前缀最大匹配优先。
#4.配置靠前优化
location / {
# 站点的跟路径,root是nginx的安装目录
# 可以在server中配置也可以在location中配置,server中加,所有location共享
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# 将服务器错误页面重定向到静态页面/50x.html
error_page 500 502 503 504 /50x.html;
# 语句块对应的参数
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
server {
# 监听80端口
listen 80;
# 监听 www.codinganhour.com域名
# 如果访问资源静态文件 需要/home/www/user/index.html存在这个文件,域名后必须是绝对路径
# http://www.codinganhour.com/user/index.html
server_name www.codinganhour.com www.coding.com;
# 请求 http://www.codinganhour.com
location / {
# 转到/home/www/路径
root /home/www/;
# 映射到index.html
index index.html;
# 防盗链 判断引用页是否来源于*.codinganhour.com域名
valid_referers none blocked *.codinganhour.com;
if ($invalid_referer) {
return 403;
}
}
# 下载限速:
location /download {
# 限制每S下载速度
limit_rate 1m;
# 超过30 之 后在下载
limit_rate_after 30m;
}
# 请求 http://www.codinganhour.com/old/index.html
location /old {
# 别名转到/home/old_www/路径下同时忽略url中的old
alias /home/old_www/;
# 映射到index.html
index index.html;
}
# 请求 http://www.codinganhour.com/baidu 跳转到www.baidu.com
# 如过http://www.baidu.com无/则请求的是www.baidu.com/old/baidu
# 有/则请求的是http://www.baidu.com
location = /old/baidu {
# 代理到指定url地址
proxy_pass http://www.baidu.com/;
}
# 正则 大小写敏感.后缀是.js、.css、.png文件都转到csdn
location ~ \.(js|css|png) {
# 指定静态文件目录
root /home/www/static/;
}
# 正则 大小写不敏感.后缀是.js、.css、.png文件都转到csdn
location ~ \.(js|css|png) {
# 指定静态文件目录
root /home/www/static/;
}
}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
6.1我们使用 nginx 的 http 服务,在配置文件 nginx.conf 中的 http 区域内,配置无数个 server ,每一个 server 对应这一个虚拟主机或者域名
http {
... ... #后面再详细介绍 http 配置项目
server {
listen 80 #监听端口;
server_name localhost #地址
location / { #访问首页路径
root /xxx/xxx/index.html #默认目录
index index.html index.htm #默认文件
}
error_page 500 504 /50x.html #当出现以上状态码时从新定义到50x.html
location = /50x.html { #当访问50x.html时
root /xxx/xxx/html #50x.html 页面所在位置
}
}
server {
... ...
}
}
6.2设置超时和传输文件
http {
sendfile on #高效传输文件的模式 一定要开启
keepalive_timeout 65 #客户端服务端请求超时时间
log_format main XXX #定义日志格式 代号为main
access_log /usr/local/access.log main #日志保存地址 格式代码 main
}
6.3开发 nginx 跨站访问设置
location ~ .*\.(html|htm)$ {
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
#Access-Control-Allow-Credentials true #允许cookie跨域
}
6.4浏览器有缓存
location ~ .*\.(html|htm)$ {
expires 12h;
}
6.5防盗链
location ~ .*\.(jpg|gif)$ {
valid_referers none blocked 127.xxx.xxx.xx
if ($invalid_referer) {
return 403;
}
}
6.6 nginx静态资源配置
http {
sendfile on;
}
http {
sendfile on;
tcp_nopush on;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
}
location ~ .*\.(gif|jpg)$ {
gzip on;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss image/jpeg image/gif image/png;
root /opt/app/code;
}
location ~ load^/download {
gzip_static on
tcp_nopush on;
root /opt/app/code;
}
6.7反向代理
server {
listen 80;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect default;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffer_size 32k;
proxy_buffering on;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k;
}
}
7.你还可以下载可视化,但是2年没更新了
官网 https://github.com/onlyGuo/nginx-gui
或者持续更新的
https://www.nginxwebui.cn/index.html
基本配置看文档,这里不追溯,
基本的页面了,8889 默认账号密码都是admin
好饿,更多的等你发现,
未完待续…