2018.9.20笔记

Wesley13
• 阅读 497

Nginx默认虚拟主机

去掉 usr/local/nginx/conf/nginx.conf 中 的内容
Server 
{
.....
}

vim /usr/local/nginx/conf/nginx.conf //增加
include vhost/*.conf;   //注意;号别漏, 在conf目录下加个vhost目录

mkdir /usr/local/nginx/conf/vhost
cd !$
vim default.conf //加入如下内容

server
{
    listen 80 default_server;  // 有这个标记的就是默认虚拟主机
    server_name 120.com;
    index index.html index.htm index.php;
    root /data/wwwroot/default;
}


mkdir -p /data/wwwroot/default/
echo "This is a default site." >/data/wwwroot/default/index.html
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
curl localhost
curl -x127.0.0.1:80 120.com

 Nginx用户认证

vim /usr/local/nginx/conf/vhost/test.com.conf//写入如下内容

server
{
    listen 80;
    server_name test.com;
    index index.html index.htm index.php;
    root /data/wwwroot/test.com;
   
    location  /
    {
        auth_basic              "Auth";
        auth_basic_user_file   /usr/local/nginx/conf/htpasswd;
     }
}


yum install -y httpd
htpasswd -c /usr/local/nginx/conf/htpasswd aming      -c 创建 -m md5加密, 第二次用不用 -c创建了

mkdir /data/wwwroot/test.com
echo "test.com">/data/wwwroot/test.com/index.html
curl -x127.0.0.1:80 test.com -I   //状态码为401说明需要验证
curl -uaming:passwd -x127.0.0.1:80 test.com -I 访问状态码变为200      passwd改为自己的aming的密码 

-t &&  -s reload //测试配置并重新加载 

编辑windows的hosts文件,然后在浏览器中访问test.com会有输入用户、密码的弹窗

针对目录的用户认证
location  /admin/
    {
        auth_basic              "Auth";
        auth_basic_user_file   /usr/local/nginx/conf/htpasswd;
}

mkdir /data/wwwroot/test.com/admin
echo "admin in test.com">/data/wwwroot/test.com/admin/index.html
-t &&  -s reload //测试配置并重新加载

针对单个文件
location  ~ admin.php    // ~(.*)admin.php$ 更全面匹配 包含 admin php结尾的文件

Nginx域名重定向

更改test.com.conf

server
{
    listen 80;
    server_name test.com test1.com test2.com;
    index index.html index.htm index.php;
    root /data/wwwroot/test.com;
    if ($host != 'test.com' ) {
        rewrite  ^/(.*)$ http://test.com/$1  permanent;
    }
}

permanent  301的意思, 想改成302用 redirect

server_name后面支持写多个域名,这里要和httpd的做一个对比
permanent为永久重定向,状态码为301,如果写redirect则为302

测试
curl -x127.0.0.1:80 test1.com/1.php -i

 Nginx访问日志

日志格式 vim /usr/local/nginx/conf/nginx.conf //搜索log_format

combined_realip 为 日志定义的名字, 可自己更改。2018.9.20笔记

除了在主配置文件nginx.conf里定义日志格式外,还需要在虚拟主机配置文件中增加

access_log /tmp/1.log combined_realip;

这里的combined_realip就是在nginx.conf中定义的日志格式名字, 如果不写会使用默认的日志格式(比较简单)

-t && -s reload curl -x127.0.0.1:80 test.com -I cat /tmp/1.log

 Nginx日志切割

自定义shell 脚本

vim /usr/local/sbin/nginx_log_rotate.sh//写入如下内容

#! /bin/bash
## 假设nginx的日志存放路径为/data/logs/
d=`date -d "-1 day" +%Y%m%d`
logdir="/data/logs"
nginx_pid="/usr/local/nginx/logs/nginx.pid"      //pid位置要正确
cd $logdir
for log in `ls *.log`
do
    mv $log $log-$d
done

/bin/kill -HUP `cat $nginx_pid`    //等效于 /usr/local/nginx/sbin/nginx -s reload

sh -x /usr/local/sbin/nginx_log_rotate.sh   // x选项可看到脚本执行过程

静态文件不记录日志和过期时间

配置如下 红色的\代表脱意 | 表示或者 expires 过期时间

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
{
          expires      7d;
          access_log off;
}

location ~ .*\.(js|css)$
 {
          expires      12h;
          access_log off;
 }

-t && -s reload
curl -x127.0.0.1:80 -I  www.test.com/images/123.png
tail -f /tmp/1.log

Nginx防盗链 

location ~* ^.+\.(ico|gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$
{
    expires 7d;
    valid_referers none blocked server_names  *.test.com ;   //先定义一个白名单
    if ($invalid_referer) {
        return 403;    //也可以写成  deny all
    }
    access_log off;
}

Nginx访问控制

需求:访问/admin/目录的请求,只允许某几个IP访问,配置如下:

location /admin/
{
    allow 192.168.192.134;
    allow 127.0.0.1;
    deny all;
}

nginx并没有顺序一说, 但一旦匹配一条规则, 后面将不再匹配

Nginx解析php相关配置

vim /data/wwwroot/test.com/1.php  //增加如下内容, 并打开网页测试, 并不能做php解析
<?php
phpinfo();
?>

配置如下: //让nginx能解析php

location ~ \.php$
    {

       # include语句会获取指定文件中存在的所有文本/代码/标记,并复制到使用 include 语句的文件中
        include fastcgi_params;
       #  fastcgi_pass 用来指定php-fpm监听的地址或者socket, 可以是本机或者其它
        fastcgi_pass unix:/tmp/php-fcgi.sock;    //写错会报错502错误 , 检查/usr/local/php-fpm/etc/php-fpm.conf 里listen定义的是什么,可改为监听ip和端口
        fastcgi_index index.php;
       # 脚本文件请求的路径
        fastcgi_param SCRIPT_FILENAME /data/wwwroot/test.com$fastcgi_script_name;   //路径要写对, 红色指的是配置文件里的root部分
    }

 Nginx代理

cd /usr/local/nginx/conf/vhost
vim proxy.conf //加入如下内容
server
{
    listen 80;
    server_name ask.apelearn.com;   //定义用户访问的域名
    location /
    {
        proxy_pass     http://121.201.9.155/;        //告诉nginx真正的ip在这里(web服务器ip)
        proxy_set_header Host   $host;               //$host  等于 上面的 server_name
        proxy_set_header X-Real-IP      $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
芝士年糕 芝士年糕
1年前
nginx 启动、停止、关闭
使用3A服务器搭建的centos系统安装nginx教程在我的往期博客中1,nginx指定配置文件/usr/local/nginx/sbin/nginxc/usr/local/nginx/conf/nginx.conf1c参数指定了要加载的nginx配置文件路径1,从容停止Nginx:killQUIT主进程号2,快速停止Nginx:kil
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
Nginx配置https
一、开启nginx的ssl模块1.未安装过nginx,编译安装配置参数如下:./configure\prefix/usr/local/nginx\withpcre\withhttp\_ssl\_modulessl模块\withhttp\_stub\_status\_module\wit
Wesley13 Wesley13
2年前
LNMP架构之虚拟主机配置、用户认证及域名重定向
本文索引:配置nginx虚拟主机nginx用户认证针对目录针对文件域名重定向配置nginx虚拟主机修改nginx主配置文件root@localhostnginx1.12.2vim/usr/local/nginx/conf/ngi
Stella981 Stella981
2年前
Linux架构之Nginx 常见问题
第54章Nginx常见问题一、Nginx多Sever优先级在开始处理一个http请求时,nginx会取出header头中的Host变量,与nginx.conf中每个server的server_name进行匹配,由此决定到底由哪一个server来处理这个请求。但如果nginx配置多个相同的
Wesley13 Wesley13
2年前
LNMP架构之访问日志、日志切割、静态文件不记录及过期时间设置
本文索引:Nginx访问日志Nginx日志切割静态文件不记录日志和过期时间Nginx访问日志修改nginx配置文件root@localhostvhostvim/usr/local/nginx/conf/nginx.conf搜索:/log_format
Stella981 Stella981
2年前
Nginx SSL补充安装
在centos中,配置nginx的https时,出现如下错误。nginx:\emerg\unknowndirective"ssl"in/usr/local/nginx/conf/nginx.conf:102,说明编译是没有启用SSL。到解压的nginx目录下./configurewith
Stella981 Stella981
2年前
Nginx之使用nginx搭建简单的文件服务器
  使用nginx可以搭建简单文件服务器  安装nginx(不详述)    修改配置文件/usr/local/nginx/conf/nginx.confuserroot;worker_processes1;error_loglogs/error.log;pidlog
Wesley13 Wesley13
2年前
nginx配置虚拟主机相关教程
1.配置虚拟主机配置虚拟主机即:在一台服务器上启动多个网站;区分不同的网站方式:域名不同,端口不同;1.1通过端口区分虚拟主机1.1.1server节点的介绍nginx的配置文件路径:/usr/local/nginx/conf/nginx.conf一个se