• nginx源码安装与使用


    [root@localhost ~]# yum -y install pcre-devel zlib-devel openssl openssl-devel gcc*

    [root@localhost ~]# useradd -r -s /sbin/nologin nginx

    [root@localhost nginx-1.12.2]# cd nginx-1.12.2

    [root@localhost nginx-1.12.2]# ./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --user=nginx --group=nginx --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log  --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx/nginx.lock --with-http_ssl_module  --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi

    [root@localhost nginx-1.12.2]# make && make install 

    [root@localhost nginx-1.12.2]# mkdir -pv /var/tmp/nginx/{client,fastcgi,proxy,uwsgi}
    mkdir: 已创建目录 "/var/tmp/nginx"
    mkdir: 已创建目录 "/var/tmp/nginx/client"
    mkdir: 已创建目录 "/var/tmp/nginx/fastcgi"
    mkdir: 已创建目录 "/var/tmp/nginx/proxy"
    mkdir: 已创建目录 "/var/tmp/nginx/uwsgi"

    [root@localhost nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

    [root@localhost nginx-1.12.2]# nginx 

    [root@localhost ~]# ss -tnl |grep 80
    LISTEN 0 128 *:80 *:*

    nginx配置。

    [root@localhost ~]# cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
    [root@localhost ~]# vi /etc/nginx/nginx.conf

    server {
    listen 8080;
    server_name www.ljj.com;
    }

    location / {
    root /webserver/;
    index index.html index.htm;
    }

    [root@localhost ~]# mkdir /webserver

     [root@localhost ~]# nginx -s reload

    windows端访问:www.ljj.com

    nginx基于basic认证的配置

     [root@localhost data]# vi /etc/nginx/nginx.conf

    server {
    listen 80;
    server_name 192.168.1.222;
    location /data/
    {
    root /locationtest1/;
    index index.html index.htm;
    auth_basic "welcome to";
    auth_basic_user_file /locationtest1/data/.htpasswd;
    }
    }

    [root@localhost ~]# cd /locationtest1/data/
    [root@localhost data]# ls
    index.html
    [root@localhost data]# cat index.html
    192.168.1.334

    [root@localhost data]# htpasswd -c -d /locationtest1/data/.htpasswd lishi
    New password:
    Re-type new password:       #密码123
    Adding password for user lishi

     [root@localhost data]# nginx -s reload

     windows端访问:192.168.1.222/data/

     nginx地址重写

     [root@localhost data]# vi /etc/nginx/nginx.conf

    server {
    listen 80;
    server_name www.ljj.com;
    location /data/
    {

    root /locationtest1/;
    rewrite ^(.*) http://www1.ljj.com$1 last;
    index index.html index.htm;
    }
    }
    server {
    listen 80;
    server_name www1.ljj.com;
    location /data/
    {
    root /locationtest1/;
    index index.html index.htm;
    }
    }

    windows端测试:www.ljj.com/data/会跳转至www1.ljj.com/data/

     路径别名

     [root@localhost www]# vi /etc/nginx/nginx.conf

    server {
    listen 80;
    server_name bbs.ljj.com;
    root /wb1/data;
    location /www/

    {
    alias /ljj/;
    index index.html index.htm;
    }
    }

    [root@localhost data]# mkdir -p /wb1/data/www
    [root@localhost data]# cd /wb1/data/www/
    [root@localhost www]# vi index.html

    [root@localhost data]# ls
    ljj www
    [root@localhost data]# pwd
    /wb1/data
    [root@localhost data]# ls www/ ljj/
    ljj/:
    index.html

    www/:
    index.html

    我正常的主页目录是在/wb1/data/www下,如果有没有路径别名,请求http://www1.ljj.com/www/,响应的就是/wb1/data/www/下的主页。
    如果有路径别名请求http://www1.ljj.com/www/,那就是/ljj/下的主页,

    Nginx虚拟目录alias和root目录

    nginx是通过alias设置虚拟目录,在nginx的配置中,alias目录和root目录是有区别的:
    1)alias指定的目录是准确的,即location匹配访问的path目录下的文件直接是在alias目录下查找的;
    2)root指定的目录是location匹配访问的path目录的上一级目录,这个path目录一定要是真实存在root指定目录下的;
    3)使用alias标签的目录块中不能使用rewrite的break(具体原因不明);另外,alias指定的目录后面必须要加上"/"符号!!
    4)alias虚拟目录配置中,location匹配的path目录如果后面不带"/",那么访问的url地址中这个path目录后面加不加"/"不影响访问,访问时它会自动加上"/";
        但是如果location匹配的path目录后面加上"/",那么访问的url地址中这个path目录必须要加上"/",访问时它不会自动加上"/"。如果不加上"/",访问就会失败!
    5)root目录配置中,location匹配的path目录后面带不带"/",都不会影响访问。

     调整用户浏览的url

    [root@localhost nginx]# vi nginx.conf  

    server {
    listen 80;
    server_name www.ljj.com;
    location /data/
    {
    root /locationtest1/;
    index index.html index.htm;
    }
    }

    server {
    listen 80;
    server_name ljj.com;
    rewrite ^/(.*) http://www.ljj.com/$1 permanent;
    }
    server {
    listen 80;
    location / {
    root /locationtest1/data/;
    index index.html index.htm;
    }
    }

    windows端访问:ljj.com/data/会跳转至www.ljj.com/data/

     Nginx域名镜像

    server {
    listen 80;
    server_name www.ljj.com;
    root /locationtest1;
    location ^~ /data
    {

    rewrite ^/data(.*) http://home.ljj.com/data1$1 last;
    index index.html index.htm;
    }
    }

    server {
    listen 80;
    server_name home.ljj.com;
    location /data1
    {
    root /ngx;
    index index.html index.htm;
    }
    }
    server {
    listen 80;
    server_name www1.ljj.com;
    root /wb1/data;
    location /www/

    {
    rewrite ^/www(.*) http://home.ljj.com/data1$1 last;
    index index.html index.htm;
    }
    }

    win端访问:www.ljj.com/data跳转至http://home.ljj.com/data1/

    win端访问:www1.ljj.com/www跳转至http://home.ljj.com/data1/

     目录自动添加/

    [root@localhost ~]# mkdir -p /web5/data/
    [root@localhost ~]# cd /web5/data/
    [root@localhost data]# vi index.html

    /web5/data/

    [root@localhost nginx]# vi nginx.conf

    server {
    listen 80;
    server_name web.ljj.com;
    root /web5;
    location ^~ /data
    {
    if (-d $request_filename)
    {
    rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
    }
    }
    }

     win端访问:web.ljj.com/data/

     目录合并

    [root@localhost nginx]# vi nginx.conf

    server
    {
    listen 80;
    server_name sina.ljj.com;
    root /sina;
    location ^~ /shohu
    {
    rewrite ^/shohu-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+)-([0-9]+).html$ /shohu/$1/$2/$3/$4/$5/$6.html last;
    }
    }

     [root@localhost ~]# mkdir /sina/shohu/12/23/34/45/56/67/ -p

    [root@localhost ~]# cd /sina/shohu/12/23/34/45/56/67/
    [root@localhost 67]# vi /sina/shohu/12/23/34/45/56/9.html

     /sina/shohu/12/23/34/45/56

    防盗链 

    server {
    listen 80;
    server_name baidu.ljj.com;
    root /locationtest1;
    location ~* ^.+.(gip|jpg|png|swf|flv|rar|zip)$ #设置防盗链文件类型,自行修改,每个后缀用“|”符号分开!
    {
    valid_referers none blocked server_name *.ljj.com; #白名单,允许文件链出的域名白名单,自行修改成您的域名!*.ljj.com这个指的是子域名,域名与域名之间使用空格隔开!
    if ($invalid_referer)
    {
    rewrite ^/ http://baidu.ljj.com/data/forbidden.png; #这个图片是盗链返回的图片,也就是替换盗链网站所有盗链的图片。这个图片要放在没有设置防盗链的网站上,因为防盗链的作用,这个图片如果也放在防盗链网站上就会被当作防盗链显示不出来了,盗链者的网站所盗链图片会显示X符号。
    }
    }
    }

    server {
    listen 80;
    server_name baidu.ljj.com;
    root /locationtest1;
    location /data/
    {
    valid_referers none blocked server_name *.ljj.com;
    if ($invalid_referer)
    {
    rewrite ^/ http://baidu.ljj.com/data/forbidden.png;
    }
    }
    }

     基于浏览器实现分离的。

    if($http_user_agent ~ Firefox)
    rewrite ^(.*)$ /firefox/$1 break;

  • 相关阅读:
    AutoMapperHelper
    EmitMapper的使用
    hdu5396 Expression 区间dp +排列组合
    Eclipse 4.2 安装Java反编译插件
    hdu 1728 逃离迷宫 bfs记步数
    阿里云部署Docker(2)
    程序猿面试宝典(第四版)——读书笔记-1、第五章:程序设计基本概念
    IOS
    hdu 5078 2014鞍山现场赛 水题
    资源文件
  • 原文地址:https://www.cnblogs.com/liujunjun/p/11933614.html
Copyright © 2020-2023  润新知