开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 9 天,点击查看活动详情
nginx的基础使用
nginx的目录
目录主要是一下几个目录,分别是:
html 目录 里边存放的是index.html 默认的首页
log目录
access.log 存放正确的日志,不过这个日志不能够一直存放不受到限制。
error.log 存放错误日志
xxx.pid 这个表示的是当前nginx主进程的进程id
conf目录
最重要的是nginx.conf,不过里边有其他的conf文件,但是那些文件起不到相对应的作用只能够用来给nginx.conf进行调用的。其实重要的文件是nginx.conf。
linux一般是把程序安装在 usr/local 里边。
nginx的最小配置
nginx各个配置的意思是什么呢,如下代码区表示nginx配置文件的意思:
user www www; #当前用户
worker_processes auto;#nginx有主进程,同时也有子进程,这个表示的是子进程没有限制。
error_log /www/wwwlogs/nginx_error.log crit;
pid /www/server/nginx/logs/nginx.pid;
stream {
log_format tcp_format '$time_local|$remote_addr|$protocol|$status|$bytes_sent|$bytes_received|$session_time|$upstream_addr|$upstream_bytes_sent|$upstream_bytes_received|$upstream_connect_time';
access_log /www/wwwlogs/tcp-access.log tcp_format;
error_log /www/wwwlogs/tcp-error.log;
include /www/server/panel/vhost/nginx/tcp/*.conf;
}
events
{
use epoll;
worker_connections 51200;
multi_accept on;
}
http
{
include mime.types; #服务器给浏览器传输的数据时,浏览器的解读类型
#include luawaf.conf; #include是引入某一个文件的意思
include proxy.conf;
default_type application/octet-stream;#默认是流的类型返回给客户端
server_names_hash_bucket_size 512;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 50m;
sendfile on;#开启的话,是减少nginx一次资源的复制。如果sendfile关闭的话,客户端请求服务器上的某一个资源,nginx会在服务器的本地拿到这个资源,并且复制到nginx的应用程序里边,然后再给网络接口返回给客户端。如果开启sendfile就是nginx从服务器上拿个资源以后,给网络接口发一个信号,这信号就是sendfile,网络接口就去读取资源直接返回给客户端。这个中间省略的部分是,nginx并不需要将资源读取到自己的应用程序里边。
tcp_nopush on;
keepalive_timeout 60;#保持链接,超时。
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 256k;
fastcgi_intercept_errors on;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6].";
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;
server_tokens off;
access_log off;
server #表示一个主机,可以有多个主机,是虚拟主机。以端口来区分,端口不同则主机不同。主机有自己的域名。
{
listen 888; #端口号
server_name phpmyadmin;#域名名称
index index.html index.htm index.php;
root /www/server/phpmyadmin;
location ~ /tmp/ { #location表示的是匹配上之后,接着下边的操作
return 403;
}
#error_page 404 /404.html;#错误页面,错误码是404的话,就会在根目录下寻找404.html这个文件
include enable-php.conf;
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*.(js|css)?$
{
expires 12h;
}
location ~ /.
{
deny all;
}
access_log /www/wwwlogs/access.log;
}
}
导入进来的conf文件:
server #这表示的是一个虚拟主机
{
listen 80;#端口号
server_name xmkaifa.cn;#域名名称
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/xmkaifa.cn;#表示的是在这个目录下
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#SSL-END
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
#error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引用配置,可以注释或修改
include enable-php-56.conf;
#PHP-INFO-END
#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
include /www/server/panel/vhost/rewrite/xmkaifa.cn.conf;
#REWRITE-END
#禁止访问的文件或目录
location ~ ^/(.user.ini|.htaccess|.git|.svn|.project|LICENSE|README.md)
{
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ .well-known{
allow all;
}
# location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
# {
# expires 30d;
# error_log /dev/null;
# access_log /dev/null;
# }
# location ~ .*.(js|css)?$
# {
# expires 12h;
# error_log /dev/null;
# access_log /dev/null;
# }
}
servername的匹配规则
域名解析的顺序,一个有多个server,那么只有当上边的server匹配不到,才会匹配下边的server.
多个域名指定一个主机
servername xmkaifa.cn www.xmkaifa.cn 那么这两个域名走的就是同一个主机文件。按照顺序来,如前边的匹配上了,就不会匹配后边的文件。
通配符、正则匹配
正则匹配会有一个标识符:
~正则表达式
~^[0-9]+.xmkaifa.cn$
这个表示的是 二级域名只要是0到9开头的就都是走的这个域名
短网址
短网址就是指 xmkaifa.cn/xxxxx 这个是一个网址,nginx在这里是一个反向代理服务器,它需要通过后边的xxxxx 到数据库里边返回一个真实的网址。
也就是数据库里边是短网址后边的参数对应一个真实的网址。
代理服务器
正向代理:是指代替客户端的服务器,例如 我们所用的路由器就是代替我们上网的。这也叫做网关。
反向代理:是值代替服务器接收别人访问的。比较经典的是 java开发时需要安装tomcat服务器,这个tomcat服务器不会直接受到用户的访问,而是由nginx进行访问。这个nginx就是反向代理服务器。
nginx还有一个作用是重写url。这个地址看起来可能比较高级。
服务器的模式:
lvs模式:就是 访问 经过代理服务器,返回给客户端也要经过代理服务器。
DR模式:就是 访问经过代理服务器, 返回由服务器直接返回给客户端。【比较经典的是:下载网站,访问携带地址,也就是少量数据。返回则是一个视频资源,比较大,所以直接返回给客户】
负载均衡
负载均衡:nginx分配给后台服务器的压力均衡,指的是一个服务器集群,也就是有很多台服务器是一样的,这一样的服务器可以理解是备份机。当用户访问服务器时,则由于算法后,轮询这些服务器,也就是每个服务器分担一些压力,每台服务器使用的时间和压力差不多。
还有另外一种情是,这个服务器的集群当有坏的时,那么他的压力会被其他服务器所承担。
负载均衡的设置
upstream 名字 {
server 服务器名:端口号;
server 服务器名:端口号;
...
}
然后在对应的server里边写上反向代理多个服务器的名字:
proxy_pass: http://名字;
注意:upstream 和server是同级别的。
截图是真实的负载均衡,就是多个服务器同时会去承担这个反向服务器返回过来的压力。
反向代理服务器的设置
在server里边,我们把反向代理的服务器的方式是:
proxy_pass http://192.168.44.102
当然我们也可以同时方向给多台服务器。
反向代理不仅仅只是对公网ip进行反向代理多个,对内网,也就是局域网也是可以反向代理多个的。