Nginx基本内容
[TOC]
下载
apt-get install nginx
目录详情
nginx一共需要3个目录文件
web目录: /root/ var/www/html
配置目录 /etc/nginx
启动目录 /usr/sbin/nginx
1533698033687.png其中在配置文件中包含了两种配置,一种是nginx的配置。也就是/etc/nginx/nginx.conf
另外一个文件可以理解为是针对个人用户对自己所需要建立的web项目的个性化配置
可以写在/etc/nginx/conf.d/下或者/etc/nginx/sites-available/default下
在nginx.conf中使用include来指向其他的配置文件,可以有多个配置
1533700822409.png当然可以填入多个配置来供选择,执行顺序从上到下执行
内容配置
下面解释一下nginx中的配置文件
#运行用户
user www-data;
#启动进程,通常设置成和cpu的数量相等。也可以是n+1 或者设置成auto
worker_processes auto;
#全局错误日志及进程PID文件
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
#工作模式及连接数上限
events {
#use epoll;
#epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
worker_connections 768; #单个后台worker process进程的最大并发连接数
# multi_accept on;
}
#设定http服务器,利用他的反向代理功能提供负载均衡
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
#设定mime类型,类型由mime.type文件定义
include /etc/nginx/mime.types;
default_type application/octet-stream;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
#设定日志格式
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
#开启gzip压缩
gzip on;
gzip_disable "msie6";
#设定conf配置文件
include /etc/nginx/conf.d/*.conf;
}
server {
#侦听80端口
listen 80;
#定义使用www.xx.com访问
server_name www.xx.com;
#设定本虚拟主机的访问日志
access_log logs/www.xx.com.access.log main;
#默认请求
location / {
root /root; #定义服务器的默认网站根目录位置
index index.php index.html index.htm; #定义首页索引文件的名称
fastcgi_pass www.xx.com;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
# 定义错误提示页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /root;
}
负载均衡配置
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
#设定mime类型,类型由mime.type文件定义
include /etc/nginx/mime.types;
default_type application/octet-stream;
#设定日志格式
access_log /var/log/nginx/access.log;
#省略上文有的一些配置节点
#设定负载均衡的服务器列表
upstream mysvr {
#weigth参数表示权值,权值越高被分配到的几率越大
server 192.168.8.1x:3128 weight=5;#本机上的Squid开启3128端口
server 192.168.8.2x:80 weight=1;
server 192.168.8.3x:80 weight=6;
}
upstream mysvr2 {
#weigth参数表示权值,权值越高被分配到的几率越大
server 192.168.8.x:80 weight=1;
server 192.168.8.x:80 weight=6;
}
#第一个虚拟服务器
server {
#侦听192.168.8.x的80端口
listen 80;
server_name 192.168.8.x;
#对aspx后缀的进行负载均衡请求
location ~ .*\.aspx$ {
root /root; #定义服务器的默认网站根目录位置
index index.php index.html index.htm; #定义首页索引文件的名称
proxy_pass http://mysvr ;#请求转向mysvr 定义的服务器列表
#以下是一些反向代理的配置可删除.
proxy_redirect off;
#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m; #允许客户端请求的最大单文件字节数
client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,
proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
}
}
}
错误解决
端口占用(1)
1533699051144.png错误原因:端口重复占用,先访问80端口看看是什么,如果已经启动了你要启动的项目则成功,如果不是
开始解决
lsof -i :80 #查看80端口的情况
netstat -ltunp #查看进程
1533699233355.png
杀死进程
kill pid
扩展
1.nginx从容停止
ps -ef |grep nginx #查看端口号
2.杀死进程
kill -QUTT 2072
1.快速停止
kill -TREM 2132 或者 kill -ITN 2132
1.强制停止
pkill -9 nginx
1.检查配置是否正确
/etc/sbin/nginx -t
使用Nginx配置一个静态页面
1)编写一个简单的网页作为测试工具
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Page Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" media="screen" href="main.css" />
<script src="main.js"></script>
</head>
<body>
<h1 style="font-size: 50px">Hello,nginxTes2222222t</h1>
</body>
</html>
2)创建一个文件夹用于存放你的文件
这里为了方便,我将文件夹添加在了/etc/nginx中,也就是nginx的安装目录中
1533753948830.png这个peoject就是我的项目,在里面创建一个www.html的静态网页
1533753995594.png1533754060371.png3)接下来配置我们的nginx.conf文件
将include中的地址改成conf.d文件夹下所有的以,conf结尾的文件
当然如果你不喜欢conf.d这个文件,你也可以自己创建一个文件夹用于存放.conf文件,再由Include指向这个文件夹就可以了
如果你配置了多个文件夹,比如
1533754338310.png那他所执行的顺序就是先去查找conf.d中的文件,如果找不到,则去conf2.d中寻找
4)配置conf.d的文件
这里我创建了一个default.conf的文件用来配置
因为对于每一个网站或者网页,都会有一个配置,因此我们可以把他认定成为一个server
1533754492646.pnglisten是监听端口
server_name是访问ip或者域名
root 是文件第一次访问的根目录
5)保存退出,启动nginx
另外需要注意的是当nginx中的配置发生变化的时候,我们可以重启Nginx,
但是如果是项目的内容发生变化,就尽量不要去重启nginx了
方便操作
1)如果你嫌麻烦觉得自己的一个server没有必要放到一个文件中再由nginx去匹配文件中的内容,那么你可以直接将你的server放置再nginx.conf下的http{}中
-
如果你想检验自己的操作是否正确,配置是否正确,则可以用nginx -t来检验
1533755331600.png
网友评论