精华内容
下载资源
问答
  • 虚拟机nginx主机访问不了问题

    千次阅读 2018-04-07 03:18:27
    首先说句,nginx启动要root账户: 1.打开终端,提示符为“$”,表明该用户为普通用户,此时,直接输su,回车,输入root密码,回车,就可以切换到root用户下,此时的提示符变为“#”。... ps aux|grep nginx //查...

    首先说句,nginx启动要root账户:
    1.打开终端,提示符为“$”,表明该用户为普通用户,此时,直接输su,回车,输入root密码,回车,就可以切换到root用户下,此时的提示符变为“#”。
    注意,输入密码时终端是不显示的,而且每次切换为root用户都要经过这个过程。
    2.切换回普通用户,只要输入 “su 用户名”就OK了。

    ps aux|grep nginx //查看 只有一个就是没起

    ip查询命名: ip addr 也可以输入 ifconfig查看ip

    .

    我的还没有 iptables-services,网上找:

    systemctl status firewalld.service #检测是否开启了firewall
    systemctl stop firewalld.service #关闭firewall
    sytsemctl disable firewalld.service #禁止firewall开机自启
    yum install iptables-services // 走到这里安装更新 一直尝试其他镜像,最后失败

    又找:

    http://mirror.centos.org/centos/7/updates/x86_64/Packages/iptables-services-1.4.21-18.3.el7_4.x86_64.rpm,先从这里下的包到了桌面

    可是在桌面上没法装

    mv /tmp/d1/test.txt(刚下载的放桌面的包) /tmp/n1(要移动的位置)
    sudo rpm -Uvh iptables-services-1.4.21-18.3.el7_4.x86_64.rpm //自己手动安装更新

    将规则写入iptables配置文件

    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT
    -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
    -A INPUT -j REJECT –reject-with icmp-host-prohibited
    -A FORWARD -j REJECT –reject-with icmp-host-prohibited
    COMMIT

    然后

    systemctl restart iptables.service  

    systemctl enable iptables.service

    最后
    在VMware里,依次点击”编辑“ - ”虚拟网络编辑器“,如下图,我选择的是NAT模式:
    这里写图片描述
    为了能够使用静态IP,这里不要勾选”使用本地DHCP服务将IP分配给虚拟机“这个选项。然后是配置子网ip,子网IP与宿主机的ip一定不能处在同一地址范围里,否则就算虚拟机能上网,网络既慢,还不稳定。我主机的ip段是192.168.5.xxx,所以我配了192.168.10.xxx来避开主机的ip段,反正ip的第三个数字在0到254并且不是5就行。Nat模式相当于配置了一个子路由器,有设置过多级路由的朋友对此应该有所体会。各位结合自己机器的IP来合理配置一个子网ip吧。

    在这个界面接着点”NAT设置”,查看虚拟机的网关,这个网关在第三步要用。我这里的网关是192.168.10.2。
    这里写图片描述

    最后
    ‘/etc/sysconfig/network-scripts/ifcfg-ens33’ 修改内容(最后的文件名因人而异):

    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=static #设置成静态
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=ens33
    UUID=d6fe4d6d-7756-4aed-bd77-19f1cab20841
    DEVICE=ens33
    ONBOOT=yes #这里如果为no的话就改为yes,表示网卡设备自动启动
    NM_CONTROLLED=no
    DNS1=8.8.8.8 #dns服务器1,填写你所在的网络可用的dns服务器地址即可
    DNS2=4.2.2.2 #dns服器2
    IPADDR=192.168.10.150 #配置ip,在第上一步已经设置ip处于192.168.10.xxx这个范围,我就随便设为150了,只要不和网关相同均可
    NETMASK=255.255.255.0 #子网掩码
    GATEWAY=192.168.10.2 #这里的网关地址就是上一步步获取到的那个网关地址

    service network restart 即可

    这里写图片描述

    总结
    这是一个完全没接触过 Linux系统的小白初尝试,见笑了,搞了好久,出来之后来总结的,也算为自己做个笔记,这没人带,全靠自己摸索真的很心酸啊,也不知道有没有漏掉啥,欢迎补充哈~~~啦啦啦~

    展开全文
  • Nginx配置路由

    2021-07-15 21:19:31
    Nginx 高性能web服务器 Nginx安装 1.下载Nginx Nginx下载地址:http://nginx.org/en/download.html wget http://nginx.org/download/nginx-1.18.0.tar.gz 2.安装Nginx需要的依赖环境 因为nginx是C语言编写的因此...

    勿以浮沙筑高台



    Nginx
    高性能web服务器

    Nginx安装

    1.下载Nginx

    Nginx下载地址:http://nginx.org/en/download.html

    wget http://nginx.org/download/nginx-1.18.0.tar.gz
    

    2.安装Nginx需要的依赖环境
    因为nginx是C语言编写的因此需要c语言环境

    yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
    

    3.解压

     tar xf nginx-1.18.0.tar.gz
    

    4.配置编译路径

    cd nginx-1.18.0/
    ./configure --prefix=/usr/app/nginx
    

    5.编译和安装

    make & make install -j 4
    cd /usr/app/nginx
    

    5.启动

    cd sbin
    ps -ef | grep nginx
    

    6.验证
    访问linux服务器地址出现下图代表成功
    在这里插入图片描述

    Nginx配置文件

    cd /usr/app/nginx/conf/
    vim nginx.conf
    

    Nginx.conf基本结构

    // nginx全局块
    ...// events块
    events {
        ...
    }// http 块
    http {
        // http全局块
        ...
        
        // server块
        server {
            ...
        }
        
        // http全局块
        ...
    }
    // upstream 块
    upstream {
        
    }
    

    Nginx.conf配置文件解析

    # 配置nginx的用户组 默认为nobody
    #user  nobody;
    #指定工作进程的个数
    #默认是1个,具体可以根据服务器cpu数量进行设置,如果不知道cpu的数量,可以设置为auto
    worker_processes  auto;
    
    # 配置nginx的错误日志 格式为 log路径 log级别
    # error_log 的日志级别为: debug info notice warn error crit alert emerg 紧急由低到高
    # error_log的默认日志级别为error,那么就只有紧急程度大于等于error的才会记录在日志
    # error_log 的作用域为 main http mail stream server location
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #Nginx运行文件地址
    #pid        logs/nginx.pid;
    
    #工作模式及连接数上限
    events {
        worker_connections  1024;
    }
    
    
    http {
    	# 文件扩展名和文件类型映射表 
    	# mime.types 指text/css,image/jpeg,text/html这样的包含类型。
    	# 在具mimetypes文件里能看见具体结构有哪些
        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"';
    
    	// 访问日志配置路径
    	// main
        # access_log  logs/access.log  main;
    
    	# 是否开启0拷贝
        sendfile        on;
        
        # 是否 #减少网络报文段的数量
        #tcp_nopush     on;
    	
    	
        #keepalive_timeout  0;
        # 链接超时时间 默认 65s 
        keepalive_timeout  65;
    
    	# 开始gzip压缩,降低带宽使用和加快传输速度,但增加了CPU的使用
        #gzip  on;
    
        server {
        	# 端口号80
            listen       80;
            # 域名 Ip,一级域名,二级域名配置
            server_name  localhost;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    		
    		# 对请求的路由进行过滤 正则匹配
            location / {
                root   html;
                index  index.html index.htm;
            }
    		# 报错地址
            #error_page  404              /404.html;
    
    		
            # redirect server error pages to the static page /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;
            #}
        }
    
    
        # another virtual host using mix of IP-, name-, and port-based configuration
        #
        #server {
        #    listen       8000;
        #    listen       somename:8080;
        #    server_name  somename  alias  another.alias;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
    
        # 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;
        #    }
        #}
    }
    

    Nginx虚拟主机配置

    更改linux文件的hosts

    vim /etc/hosts
    #格式 : IP  域名
    192.168.31.5 www.fu.com
    192.168.31.5 www.yan.com
    

    因为用的虚拟机,更改本机hosts
    在这里插入图片描述

    在Nginx.conf中配置虚拟机

    server {
        listen 80;
        server_name www.fu.com; # 域名区分
        
        location / {
            root html/fu;
            index index-1.html;
        }
    }
    server {
        listen 80;
        server_name www.yan.com;  # 域名区分
        
        location / {
            root html/fu;
            index index-2.html;
        }
    }
    

    在nginx.conf配置虚拟主机文件路径

    include "vhosts/server.demo.conf";
    

    创建虚拟主机文件路径

    cd /usr/app/nginx/conf
    mkdir -p vhosts
    cp /usr/app/nginx/conf/nginx.conf /usr/app/nginx/conf/vhosts/server.demo.conf
    

    然后将上面的server信息放进去。

    创建server信息里的html文件

    cd /usr/app/nginx/html/
    echo "www.fu.com" >> index-1.html
    echo "www.yan.com" >> index-2.html
    

    重新加载配置文件并启动

     ./nginx -s reload
     ./nignx -t #启动
    

    查看是否启动成功
    进入log/error.log查看是否有signal process started这句话,有则代表成功

    访问网站http://www.fu.com/http://www.yan.com/成功在这里插入图片描述

    在这里插入图片描述

    location匹配规则

    = 开头表示精准匹配

    # ~ 大小写敏感
    # ~* 忽略大小写
    # ^~ 只需匹配uri开头
    # @ 定义一个命名的 location,在内部定向时使用,例如 error_page
    location  [ = | ~ | ~* | ^~ ] /uri/ { ... }
    location @name { ... }
    

    任意匹配 location / {}
    当找不到路由的时候就会走这个路由

    server {
        listen 80;
        server_name www.fu.com; # 域名区分
        location / {
            root html/fu;
            index 404.html;
        }
    }
    

    只能匹配=号后面的内容。

    // 精准匹配
     location = / {
            root html/fu;
            index 404.html;
        }
    // ~* 忽略大小写
     location ~* / {
            root html/fu;
            index 404.html;
        }
    // ~大小写敏感
     location ~ / {
            root html/fu;
            index 404.html;
        }
    

    最长匹配原则

    就是当找不到路由的时候,会按最长路径的路由进行匹配
    比如:

     location /123 {
            root html/fu;
            index 404.html;
        }
       location /1234 {
            root html/fu;
            index 404.html;
        }
    	#动静分离配置
     location ~* \.(gif|css|js|png|jpg|jpeg){
            root html/fu;
            index 404.html;
        }
    

    我们访问1234598734时,没有这个路由则会匹配到1234这个路由,按匹配字符数量最多的进行路由。

    展开全文
  • 前置文章: Linux(CentOS7) 下 Nginx1.15.8 安装步骤 ...用 Nginx 可以很好地帮我们实现路由功能,我们所有需要做的就是配置好 location 模块。 目录 语法规则 匹配规则 proxy_pass 代理转发 root 与 inde...

    前置文章:

    Linux(CentOS7) 下 Nginx1.15.8 安装步骤

    Nginx 的配置文件 nginx.conf

    我们访问一个网址,服务器返回对应的资源。那么一个网址是如何对应一个资源的呢?
    用 Nginx 可以很好地帮我们实现路由功能,我们所有需要做的就是配置好 location 模块。

    目录

    语法规则

    匹配规则

    proxy_pass 代理转发

    root 与 index

    root 与 alias

    location 执行过程

    rewrite 重定向

    Nginx 处理请求的11个阶段


    语法规则

     location [=|~|~*|^~] /uri/ {… }

    符号含义
    =精确匹配 
    ^~非正则匹配
    ~正则匹配(区分大小写)
    ~*正则匹配(不区分大小写)
    !~正则不匹配(区分大小写)
    !~*正则不匹配(不区分大小写)
     普通匹配(这里没有符号的时候)

    匹配规则

    1. 精准匹配命中时,停止location

    2.一般匹配(普通和非正则)命中时,对比所有命中的一般匹配,选出最长的一条

    3.如果最长的那一条为非正则匹配,直接匹配此条,停止location

    4.如果最长的那一条为普通匹配,继续尝试正则location(以上至此都不存在代码顺序)

    5.按代码顺序执行正则匹配,当第一条正则location命中时,停止location

    示例:

    想运行以下示例需先下载第三方模块echo-nginx-module:

    #下载到/usr/local/src目录

    wget https://github.com/openresty/echo-nginx-module/archive/v0.61.tar.gz

    tar -zxvf v0.61.tar.gz                                 

    #在Nginx源码目录nginx-1.15.8下配置,--add-module指向模块目录即会安装插件到nginx中

    ./configure --add-module=/usr/local/src/echo-nginx-module-0.61/

    make && make install

    #验证安装

    nginx -V

    你还需要配置 C:\Windows\System32\drivers\etc\hosts 文件,添加“虚拟机ip 域名”到最后:

    192.168.100.14 test.loaction.com

    server {
    
    	listen       80;
    	server_name  test.location.com;
    
    	#精准匹配测试
    	#第1,2条虽然匹配,但第三条是精准匹配,出第三条结果
    	#测试路径/equal/a/b/c
    	location ~ /equal/* {
    		echo '/equal/*';
    	}
    	location /equal/a/b {
    		echo '/equal/a/b';
    	}
    	location = /equal/a/b/c {
    		echo '/equal/a/b/c';
    	}
    
    	#普通匹配测试
    	#第1,2条虽然匹配,第三条匹配更长,出第三条结果
    	#测试路径/match/a/b/c
    	location /match/a {
    		return 200  "/match/a";
    	}
    	location /match/a/b {
    		return 200  "/match/a/b";	
    	}
    	location /match/a/b/c {
    		 return 200  "/match/a/b/c";
    	}
    	location /match/a/b/c/d {
    		return 200  "/match/a/b/c/d"; 
    	}
    
    	#正则匹配覆盖普通匹配,不会覆盖非正则匹配
    	#访问/re/a.htm,会被后面的正则覆盖
    	#访问/re/a/b开头的路径,不会被后面的正则覆盖
    	location /re/a.htm {
    		 echo 'match /re/a.htm';
    	}
    	location ^~ /re/a/b {
    		echo 'math ^~/re/a/b*';		
    	}
    	location ~ /re/(.*)\.(htm|js|css)$ {
    		echo "cover /re/$1.$2";
    	}
    
    	#正则匹配成功一条后,便不再走其它正则
    	#测试路径/rex/a/b/c.htm
    	location ~ /rex/.*\.(htm|js|css)$ {
    		echo "match first";
    	}
    	location ~ /rex/a/(.*)\.(htm|js|css)$ {
    		echo "match second";
    	}
    	location ~ /rex/a/b/(.*)\.(htm|js|css)$ {
    		echo "match third";
    	}
    }
    

    结果:

    精准匹配最优先

    一般匹配选最长

    正则覆盖普通匹

    不能覆盖非正则

    正则匹配选首位

     

    proxy_pass 代理转发

    在上面的示例中,我们通过修改本机hosts文件,让本机访问 test.loaction.com 相当于访问 192.168.100.14。我们现在假设有一个服务在 192.168.100.15 这台机器上。我们能不能通过访问 test.loaction.com,访问到 192.168.100.15 上的资源呢?

    这样的想法其实是在模拟实际做项目的时候,我们可以只购买一个域名,然后访问多个云服务器。我们要做的就是让域名对应的服务器具有代理转发的功能。这里是服务器作为代理,让客户端能通过访问代理服务器来访问其它服务器,所以是反向代理


    通过在 location 里配置 proxy_pass 就能实现代理转发功能,帮助我们将请求转发到别的服务器。

    我们先看示例再看规则:

    server {
            listen       80;
            server_name	test.location.com;
    
            本机ip地址:192.168.100.104
    
            #后端服务路径:
            http://192.168.100.105:8080/user/query?id=1
            
            #规则一:
            #访问路径:http://test.location.com/user/query?id=1
            location /user {
            #path1:/user path2:/query 
                              #ip:port 后面无 /
                   proxy_pass http://192.168.0.105:8080;
            }
            
            规则二:
            #访问路径 :http://test.location.com/A/user/query?id=1
            location /A/user {
            #path1:/A/user path2:/query 
                               #ip:port 后面有 /xxx
                    proxy_pass http://192.168.0.105:8080/user;
            }
           
        }

    解读:

    后端服务路径都是 http://192.168.100.105:8080/user/query?id=1。用规则一,可以使访问路径为 http://test.location.com/user/query?id=1;用规则二,可以使访问路径为 http://test.location.com/A/user/query?id=1

    规则:

    1. 访问路径格式为 sever_name + path1 + path2 + ?param

    2. location 后面的路径就是 path1,对照访问路径格式,path1 和 ?param 之间的为path2

    3. 如果 proxy_pass 后面的值形如 http: // ip : port; 

        那么实际访问的地址是 http: // ip : port + path1 + path2 + ?param

    4. 如果 proxy_pass 后面的值形如 http: // ip : port / xxx; (末尾相比上面有 /xxx)

        那么实际访问的地址是 http: // ip : port  + path2 + ?param

    规则二的作用:

    如果我们访问其它服务器都使用规则一,那么我们将无法直观地从 URL 确定这个服务属于那台机器或者哪种服务。

    而如果使用规则二,我们可以通过合理的设置明确地知道,我们访问的是服务A。

    root 与 index

    nginx.conf 里的默认 location 如下:

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

    意思是资源文件的根目录在 nginx 程序所在文件夹下的 html 文件夹:

    如果我们没有写 URI,默认的资源是 html 文件夹下的 index.html

    但是你如果这样配置:

    location / {
                root   html;
                index  index.html;
            }
    
    location /index.html {
                    echo "index";
            }

    最后访问 http://test.location.com/ 浏览器会输出 index:

    也就是说,虽然前面设置了 index ,但是如果它对应的地址有被 location 匹配到的话,会执行 location 匹配后的结果

    但是,必须还是得有 index 对应的文件

    为了验证上面这一点,我把 html 目录下的 index.html 改成 index,再 reload 并访问:

    root 与 alias

    还是先看示例比较直观:

    server {
            listen       80;
            server_name	test.local.com;
    
        #文件地址:/etc/nginx/html/static/a.html
    
    	#访问路径:http://test.local.com/static/a.html 	
    	location /static {
            #path1:/static path2:/a.html
            root /etc/nginx/html/;
            #文件地址:root + path1 + path2
            }
    
    	#访问路径:http://test.local.com/target/a.html 
    	location /target {
            #path1:/target path2:/a.html
            alias /etc/nginx/html/static/;
            #文件地址:alias + path2
            }	       
        }
    

    解读:

    文件地址一样,访问路径可以不同。

    使用 root 声明的是根目录,经过 location 匹配后,直接去根目录下找访问路径中 sever_name 后面的文件地址。

    使用 alias 声明的是别名目录,经过 location 匹配后,去别名目录下找访问路径中 sever_name 后面除去 location 匹配的地址的剩余地址。这就好像给 location 匹配的地址取了个别名一样。

    规则

    1. 访问路径格式为 sever_name + path1 + path2 

    2.  location 后面的路径就是 path1,对照访问路径格式,path1 后面的就是 path2

    3. 如果使用 root ,文件地址为:

        root + path1 +path2

    4. 如果使用 alias ,文件地址为:

       alias + path2

    location 执行过程

    结合以上内容,就很容易理解 location 执行过程了,如下图

    rewrite 重定向

    location 里还可以配置 rewrite 实现重定向:

    rewrite regex replacement [flag];

    其中:

    regex:正则表达式

    replacement :替换值flag:后续处理标识,可以为 break/last/permanent/redirect


    重点在于 flag :

    1. flag=break

    发生 nginx 内部重定向,path值被更新,rewrite层面的命令会中断。原控制流程逻辑不变往下走

    2. flag=last

    发生nginx内部重定向,path值被更新,rewrite层面的命令会中断。控制流程刷新,重新进行整个location层的逻辑流程

    3. flag= permanent/redirect

    发生页面重定向(301永久重定向/302临时重定向),nginx流程结束,返回http响应到浏览器,页面url更新

    4.flag为空

    发生nginx内部重定向,path值被更新,rewrite层面的命令继续。最后一个rewrite完毕,刷新控制流程,重新进行location重匹配

    示例:

    server {
    
    	listen       80;
    	server_name  test.location.com;
    
    	location /a.html {
    		echo 'I am a.html';
    	}
    	location /b.html {
    		echo 'I am b.html';
    	}
    
    	#此路径请求:http://test.location.com/aa.html
    	location /aa.html {##内部重定向
    		rewrite ^/  /a.html break;##不会执行下面的rewrite		
    		rewrite ^/  /b.html break;	
    		root   /etc/nginx/html/;
    	}
    	
    
    	#此路径请求:http://test.location.com/ab.html
    	location /ab.html {##内部重定向
    		rewrite ^/  /a.html last;##不会执行下面的rewrite,但重新location匹配
    		rewrite ^/  /b.html last;
    		rewrite ^/  /c.html;
    		root   /etc/nginx/html/;		
    	}
    
    	#此路径请求:http://test.location.com/ba
    	location /ba {
    		rewrite ^/  /b.html permanent;##301永久重定向
    		root   /etc/nginx/html/;
    	}
    
    
    	#此路径请求:http://test.location.com/bb
    	location /bb {
    		rewrite ^/  /b.html redirect;##302临时重定向
    		set $aa 12;
    		root   /etc/nginx/html/;
    	}
    	
    	#此路径请求:http://test.location.com/cc.html
    	location /cc.html {
                    rewrite ^/  /c.html;##指令不停,继续往下
                    rewrite ^/  /b.html;
                    rewrite ^/  /a.html;##最后一条,生效的是这条
                    root   /etc/nginx/html/;
            }
    
    }
    

    结果:

    访问 http://test.location.com/aa.html,直接寻找 root 目录下的 a.html,我没有写这个 html,所以是 404

    访问 http://test.location.com/ab.html,因为重新 location 匹配了,所以匹配到了上面的 /a.html,输出了一句话

    访问 http://test.location.com/ba,永久重定向,可以看到地址栏的网址都变了,是外部重定向

    访问 http://test.location.com/bb,临时重定向

    访问 http://test.location.com/cc.html,不是 404,也经过了重新 location 匹配

    Nginx 处理请求的11个阶段

    Nginx 处理请求的全过程一共划分为 11 个阶段(如图),按阶段由上到下依次执行 (上一阶段的所有指令执行完毕,才进入下一阶段)

    各阶段的含义如下:

    • post_read: 接收到完整的 http 头部后处理的阶段,在uri重写之前。一般跳过
    • server_rewrite: location匹配前,修改uri的阶段,用于重定向,location块外的重写指令(多次执行)
    • find_config: uri 寻找匹配的location块配置项(多次执行)
    • rewrite:找到location块后再修改uri,location级别的uri重写阶段(多次执行)
    • post_rewrite:防死循环,跳转到对应阶段
    • preaccess: 权限预处理
    • access:判断是否允许这个请求进入
    • post_access: 向用户发送拒绝服务的错误码,用来响应上一阶段的拒绝
    • try_files: 访问静态文件资源
    • content : 内容生成阶段,该阶段产生响应,并发送到客户端
    • log:记录访问日志
    展开全文
  • 乌班图 Ubuntu20.04 配置nginx 路由前端页面 乌班图 Ubuntu20.04 的nginx 配置文件和Centos有不一样的地方,踩坑之后解决问题 首先傻瓜式安装 apt-get install nginx 一、nginx目录结构 root@dell3640:/# cd /etc/...

    乌班图 Ubuntu20.04 配置nginx 路由前端页面

    乌班图 Ubuntu20.04 的nginx 配置文件和Centos有不一样的地方,踩坑之后解决问题

    首先傻瓜式安装 apt-get install nginx

    一、nginx目录结构

    root@dell3640:/# cd /etc/nginx
    root@dell3640:/etc/nginx# ll
    total 80
    drwxr-xr-x   8 root root  4096 Mar 19 08:55 ./
    drwxr-xr-x 125 root root 12288 Mar 23 09:23 ../
    drwxr-xr-x   2 root root  4096 Apr 21  2020 conf.d/
    -rw-r--r--   1 root root  1077 Feb  4  2019 fastcgi.conf
    -rw-r--r--   1 root root  1007 Feb  4  2019 fastcgi_params
    -rw-r--r--   1 root root  2837 Feb  4  2019 koi-utf
    -rw-r--r--   1 root root  2223 Feb  4  2019 koi-win
    -rw-r--r--   1 root root  3957 Feb  4  2019 mime.types
    drwxr-xr-x   2 root root  4096 Apr 21  2020 modules-available/
    drwxr-xr-x   2 root root  4096 Mar 19 08:55 modules-enabled/
    -rw-r--r--   1 root root  1490 Feb  4  2019 nginx.conf
    -rw-r--r--   1 root root   180 Feb  4  2019 proxy_params
    -rw-r--r--   1 root root   636 Feb  4  2019 scgi_params
    drwxr-xr-x   2 root root  4096 Mar 23 09:33 sites-available/
    drwxr-xr-x   2 root root  4096 Mar 19 08:55 sites-enabled/
    drwxr-xr-x   2 root root  4096 Mar 19 08:55 snippets/
    -rw-r--r--   1 root root   664 Feb  4  2019 uwsgi_params
    -rw-r--r--   1 root root  3071 Feb  4  2019 win-utf
    
    

    实际配置路径

    root@dell3640:/etc/nginx# cd sites-available/
    root@dell3640:/etc/nginx/sites-available# ll
    total 12
    drwxr-xr-x 2 root root 4096 Mar 23 09:33 ./
    drwxr-xr-x 8 root root 4096 Mar 19 08:55 ../
    -rw-r--r-- 1 root root 2666 Mar 23 09:33 default
    root@dell3640:/etc/nginx/sites-available# vi default 
    
    

    更改default 文件

    root@dell3640:/etc/nginx/sites-available# vi default 
    
            server_name _;
      
            location / {
                    # First attempt to serve request as file, then
                    # as directory, then fall back to displaying a 404.
                    try_files $uri $uri/ =404;
            }
    
    #这个位置配置你自己的路由
            location /hyClient/{
                  alias /opt/page/hyClient/;
                  index  index.html index.htm;
             }
    
             location /hyScreen/{
                  alias /opt/page/hyScreen/;
                  index  index.html index.htm;
            }
            # pass PHP scripts to FastCGI server
            #
            #location ~ \.php$ {
            #       include snippets/fastcgi-php.conf;
            #
            #       # With php-fpm (or other unix sockets):
            #       fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
            #       # With php-cgi (or other tcp sockets):
            #       fastcgi_pass 127.0.0.1:9000;
            #}
    
            # deny access to .htaccess files, if Apache's document root
            # concurs with nginx's one
            #
            #location ~ /\.ht {
            #       deny all;
            #}
    }
    
    

    刷新nginx配置,我习惯直接重启

    查看状态

    service nginx status

    启动

    service nginx start

    重启

    service nginx restart

    停止

    service nginx stop

    展开全文
  • nginx可以实现虚拟主机的配置nginx支持三种类型的虚拟主机配置。 1、基于域名的虚拟主机 (server_name来区分虚拟主机——应用:外部网站) 2、基于ip的虚拟主机, (一块主机绑定多个ip地址) 3、基于端口的虚拟...
  • Nginx nginx & tomcat & jsp & keepalived 下载路径: 链接:https://pan.baidu.com/s/1oeCPd6mH5TbKQvDjD4j4YA 提取码:abcd 一、Nginx 的简介 1 反向代理 指定是用户访问服务器, 但是服务器悄悄地把...
  • nginx配置文件nginx.confg中,可使用if语句块来转发流量,表达式包含http header的判断,执行语句是proxy_pass指令,格式类似: if ($http_region = "sz") { proxy_pass http://echo-sz.defaul
  • 什么是虚拟主机: 虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个... nginx可以实现虚拟主机的配置nginx支持三种类型的虚拟主机配置。 1、基于域名的虚拟主机 (server_name来区分虚拟主...
  • 需求: (1)你希望通过www.domain.com/module/controller/action而不是...(2)如果你是用的也是nginx服务器。就可以通过修改vhosts.conf配置文件实现。 完整配置文件如下: server { server_name www....
  • 虚拟机A: centos7-192.168.11.10(安装nginx+keepalived) 虚拟机B: centos7-192.168.11.11(安装nginx+keepalived) 虚拟机C: centos7-192.168.11.12(运行的web项目) ps: ubuntu就是个坑,md 然后A,B的配置文件 A...
  • 虚拟机配置网络设置

    2020-08-02 11:45:06
    ​ 之前笔者服务器装nginx时并没有遇到太多坑,一步一步跟着敲命令就完事了,但最近用虚拟机再装了一次,网络设置弄的不好,网上搜了一大堆,结果搞得更乱了,最后还原默认设置才好的。 环境: CentOS:CentOS-7-...
  • 虚拟机里的CentOS7安装配置nginx,之前需要一些依赖库作为编译安装的条件,具体作用和命令详情跳转我之前的博客。 安装并使用VMware-workstation-full-15.5.0安装CentOS7后检查是否已安装GCC、PCRE、Zlib等实现...
  • 大体网络拓扑如图: VM物理机单网卡,IP192.168.1.2,VM虚拟机...因192段外联为10M专线,带宽较小,172段外联为500M光宽带,50M上行,比192段的上行要大,在不改变默认路由的情况下,指定目标主机222.172.200.68...
  • 1、Nginx ("engine x"... 2、常见的应用服务器: Apache/Microsoft IIS /Tomcat/Lighttpd/Nginx ...功能: 路由、负载、静态服务器 3个功能 安装的步骤: 下载: wget http://nginx.org/download/nginx...
  • 1.nginx.conf配置如下 upstream loadbalance_user { //可写入多个后台地址,实现负载均衡 server 192.168.1.189:5007 weight=1; server 192.168.1.164:5007 weight=1; } upstream loadbalance_log { server ...
  • NGinx实现虚拟机主机

    2021-03-11 22:59:17
    一、什么是虚拟主机: ... 二、nginx支持三种类型的虚拟主机配置: 1、基于域名的虚拟主机 (server_name来区分虚拟主机...1、配置通过域名区分的虚拟机 [root@mysql03 nginx]# cat conf/nginx.conf worker_processe.
  • 千亿流量拦截控制处理技术-NginxNginx使用与配置1 什么是nginx1.1 可大量并行处理1.2 与 Apache 相比1.2.1 Apache VS Nginx1.2.2 常用web服务器对比1.3 Nginx 模块1.3.1 核心模块1.3.2 标准 HTTP 模块1.3.3 可选 ...
  • 1.docker中部分nginx 1.1 拉取镜像 docker pull nginx 1.2 创建挂载目录 mkdir -p /data/nginx/{conf,conf.d,html,logs} 1.3 在conf目录下创建nginx.conf 文件 #user nobody; worker_processes 1; #error_log ...
  • OpenResty Nginx负载均衡配置和虚拟服务器路由配置详解 转自:http://dditblog.com/itshare_566.html 新段时间把自己的博客搬到了云服务器上、那么搭建环境就是必须的了、在搭建好环境之后、需要对Nginx...
  • nginx 反向代理多域名 多虚拟机配置

    千次阅读 2016-08-05 10:44:42
    最近帮朋友做了两个网站,预算很小很小.小到两个网站只能跑在一台512M内存的公网...因此就有了标题所说的“nginx多域名单服务器单IP单Tomcat不同应用”上的配置问题。Nginx介绍的废话就不多说了,在这里把配置文件
  • Nginx 配置无效——几中情况

    千次阅读 2017-10-20 10:24:45
    nginx配置无效,可能情况 以下为windows下使用 1、nginx重复打开:双击ngin.exe后,闪退,其实是已经打开了,在进程中可以开到多个nginx在运行,所以尽量在命令行中打开nginx folderName/> nginx.exe 2、浏览器...
  • nginx--虚拟机

    2021-04-08 14:49:03
    按照之前的方法将项目上传至虚拟机上 //虚拟机上 cd /home/virtualevirment_make mkdir 2048 sudo chmod 777 2048 -R 在pycharm中配置好上传本地2048文件 Nginx Nginx是一款轻量级的Web服务器/反向代理服务器以及...
  • 参考:https://blog.csdn.net/yin138/article/details/79267169
  • 2、Nginx配置虚拟机 3、Nginx实现反向代理 4、Nginx实现负载均衡 5、Sso系统工程搭建 2. 什么是nginx Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor ...
  • 1.在CentOS虚拟机中启动一个Docker容器# 创建并运行一个名字为runoob-nginx-test 的nginx 容器,映射端口号8083->80[root@localhost ~]# docker run --name runoob-nginx-test -p 8083:80 -d nginxWARNING: IPv4 ...
  • centos下nginx配置多站点

    千次阅读 2019-03-27 14:22:23
    centos下nginx配置多站点,并且在宿主机上使用浏览器访问站点 1. 修改nginx配置文件 首先查看当前nginx配置文件nginx.conf,我的目录是 /usr/local/nginx/conf/nginx.conf vi /usr/local/nginx/conf/ngin...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,849
精华内容 3,539
关键字:

虚拟机nginx配置路由