nginx常用命令

nginx常用命令解决刷新 404 alias 指定的目录是准确的 即 location 匹配访问的 path 目录下的文件直接是在 alias 目录下查找的 root 指定的目录是 location 匹配访问的 path 目录的上一

大家好,欢迎来到IT知识分享网。

目录

1、 安装启动nginx 

2、 查看nginx是否正常运行

3、 停止nginx/重启nginx

4、 修改配置文件

5、 再配置一个端口

7、nginx下一个server配置多个location

Nginx虚拟目录alias和root目录

示例一

示例二

 示例三

 示例四

总结

Nginx路由匹配规则的一些理解

精确匹配

精确前缀匹配

正则匹配

普通前缀匹配

通用匹配

引用一个完整例子

清除 Nginx

1.首先输入命令 ps -ef | grep nginx检查一下nginx服务是否在运行。

2.停止Nginx服务

3.查找、删除Nginx相关文件

find查找相关文件

4.再使用yum清理


1、 安装启动nginx 

//安装nginx yum install nginx //启动nginx nginx //使用命令nginx -t查找nginx配置文件 并使用vi命令修改该配置文件 nginx -t vi /etc/nginx/nginx.conf

2、 查看nginx是否正常运行

 ps -ef |grep nginx netstat -lntp //查看所有被主机监听的端口

3、 停止nginx/重启nginx

nginx -s stop nginx -s reload

4、 修改配置文件

nginx -t vi /etc/nginx/nginx.conf nginx -s reload

5、 再配置一个端口

server {
        listen 80;
        ...
    }

server {
        listen 9090;
        server_name chen;
        root /home/html/chen;

        location /{
                
        }
    }

7、nginx下一个server配置多个location

 server { listen 80 default_server; listen [::]:80 default_server; server_name interview; root /home/mayun/interview/; location / { } location ^~ /gis/ { alias /home/gis/new_york/; } } 

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目录后面带不带”/”,都不会影响访问。

举例说明(比如nginx配置的域名是www.wangshibo.com):

示例一

location /huan/ {       alias /home/www/huan/; }

在上面alias虚拟目录配置下,访问http://www.wangshibo.com/huan/a.html实际指定的是/home/www/huan/a.html。
注意:alias指定的目录后面必须要加上”/”,即/home/www/huan/不能改成/home/www/huan

上面的配置也可以改成root目录配置,如下,这样nginx就会去/home/www/huan下寻找http://www.wangshibo.com/huan的访问资源,两者配置后的访问效果是一样的!

location /huan/ { root /home/www/; }

示例二

location /web/ {
      alias /home/www/html/;
}

# ln -s /home/www/web /home/www/html       //即保持/home/www/web和/home/www/html内容一直

 示例三

  server {
    listen 80;
    server_name www.wangshibo.com;
    index index.html index.php index.htm;
    access_log /usr/local/nginx/logs/image.log;

    location / {
      root /var/www/html;
    }

    location /haha {
      #  匹配的path目录haha不需要真实存在alias指定的目录中,后面的"/"符号一定要带上
      alias /var/www/html/ops/;
      rewrite ^/opp/hen.php(.*)$ /opp/hen.php?s=$1 last;
      # rewrite ^/opp/(.*)$ /opp/hen.php?s=$1 last;
    }
    #  匹配的path目录wang一定要真实存在root指定的目录中(就/var/www/html下一定要有wang目录存在)
    location /wang {
      root /var/www/html;
    }

  }

 示例四

 server {
    listen 80;
    server_name www.kevin.com;

    access_log /data/nginx/logs/www.kevin.com-access.log main;
    error_log /data/nginx/logs/www.kevin.com-error.log;

    location / {
      root /data/web/kevin;
      index index.php index.html index.htm;
    }

    location /document/ {
      alias /data/web/document/;
    }

  }

  # 如上配置后,则:
  # 访问http://www.kevin.com/admin   就会找到/data/web/kevin/admin目录
  # 访问http://www.kevin.com/document  就会找到/data/web/document 目录 (里面是一些静态资源)

总结

  server {
    listen 80;
    listen [::]:80;
    server_name _;
    root /usr/share/nginx/html;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
      root /var/sph;
      index index.html index.htm;
      try_files $uri $uri/ /index.html; # 解决刷新404
    }

    #alias指定的目录是准确的,即location匹配访问的path目录下的文件直接是在alias目录下查找的;
    #location /document/ {
    # alias /var/web/document/;
    #}

    #root指定的目录是location匹配访问的path目录的上一级目录,这个path目录一定要是真实存在root指定目录下的
    # location /document/ {
    #   root /var/web/;
    # }

    # /web/ 会直接替换为/var/web/document
    # location /web/ {
    #   alias /var/web/document/;
    # }

    # 这样的话,还不能直接改成root目录配置。 因为目录称为了/var/web/web/
    # location /web/ {
    #   root /var/web/;
    # }

    # 匹配的path目录web不需要真实存在alias指定的目录中
    # 匹配的path目录web一定要真实存在root指定的目录中


    # 配置代理
    location /dev/ {
      # 设置代理目标
      proxy_pass http://sph-h5-api.atguigu.cn/;
    }
    error_page 404 /404.html;
    location = /404.html {
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }
  }

Nginx路由匹配规则的一些理解

使用过nginx的同学都知道,在nginx配置文件中通过location配置路由转发规则,配置语法为:

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

中括号中为路由匹配符号,常见的有: 

1 =:精确匹配 2 ^~:精确前缀匹配 3 ~:区分大小写的正则匹配 4 ~*:不区分大小写的正则匹配 5 /uri:普通前缀匹配 6 /:通用匹配 

精确匹配

精确匹配使用  表示,nginx进行路由匹配的时候,精确匹配具有最高的优先级,请求一旦精确匹配成功nginx会停止搜索其他到匹配项

配置实例

location = /test { ... } 

精确前缀匹配

精确前缀匹配的优先级仅次于精确匹配,nginx对一个请求精确前缀匹配成功后,停止继续搜索其他到匹配项

配置实例

location ^~ /test_a { ... }

正则匹配

正则匹配分为区分大小写和不区分大小写两种,分别用 ~ 和 ~* 表示;一个请求精确匹配和精确前缀匹配都失败后,如果配置有相关的正则匹配location,nginx会尝试对该请求进行正则匹配。需要说明的是正则匹配之间没有优先级一说,而是按照在配置文件中出现的顺序进行匹配,一旦匹配上一个,就会停止向下继续搜索

配置实例

# 配置1 location ~ /test_a { ... } # 配置2 location ~* /test_A { ... }

对于请求 /test_a/hello 来说会被匹配到 配置1 处理,/test_A/hello 则会被匹配给 配置2 处理

普通前缀匹配

普通前缀匹配前面没有任何修饰符,直接在location后写需要匹配的uri,它的优先级次于正则匹配

配置实例

location /img { ... }

通用匹配

通用匹配使用一个 / 表示,可以匹配所有请求,一般nginx配置文件最后都会有一个通用匹配规则,当其他匹配规则均失效时,请求会被路由给通用匹配规则处理;如果没有配置通用匹配,并且其他所有匹配规则均失效时,nginx会返回 404 错误

配置实例

location / { ... }

引用一个完整例子

nginx路由规则配置:

 

location = / { echo "规则A"; } location = /login { echo "规则B"; } location ^~ /static/ { echo "规则C"; } location ^~ /static/files { echo "规则X"; } location ~ \.(gif|jpg|png|js|css)$ { echo "规则D"; } location ~* \.png$ { echo "规则E"; } location /img { echo "规则Y"; } location / { echo "规则F"; }
请求uri 匹配路由规则
http://localhost/ 规则A
http://localhost/login 规则B
http://localhost/register 规则F
http://localhost/static/a.html 规则C
http://localhost/static/files/a.txt 规则X
http://localhost/a.png 规则D
http://localhost/a.PNG 规则E
http://localhost/img/a.gif 规则D
http://localhost/img/a.tiff 规则Y

清除 Nginx

1.首先输入命令 ps -ef | grep nginx检查一下nginx服务是否在运行。

[root@localhost /]# ps -ef |grep nginx root 3163 2643 0 14:08 tty1 00:00:00 man nginx root 5427 1 0 14:50 ? 00:00:00 nginx: master process nginx nginx 5428 5427 0 14:50 ? 00:00:00 nginx: worker process root 5532 2746 0 14:52 pts/0 00:00:00 grep --color=auto nginx

2.停止Nginx服务

[root@localhost /]# /usr/sbin/nginx -s stop [root@localhost /]# netstat -lntp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1261/sshd tcp6 0 0 :::111 :::* LISTEN 1/systemd tcp6 0 0 :::22 :::* LISTEN 1261/sshd 

3.查找、删除Nginx相关文件

查看Nginx相关文件:whereis nginx [root@localhost /]# whereis nginx nginx: /usr/sbin/nginx /usr/lib64/nginx /etc/nginx /usr/share/nginx /usr/share/man/man8/nginx.8.gz /usr/share/man/man3/nginx.3pm.gz 

find查找相关文件

[root@localhost /]# find / -name nginx /usr/lib64/perl5/vendor_perl/auto/nginx /usr/lib64/nginx /usr/share/nginx /usr/sbin/nginx /etc/logrotate.d/nginx /etc/nginx /var/lib/nginx /var/log/nginx 

依次删除find查找到的所有目录:rm -rf /usr/sbin/nginx

4.再使用yum清理

[root@localhost /]# yum remove nginx 依赖关系解决 ====================================================================================================== Package 架构 版本 源 大小 ====================================================================================================== 正在删除: nginx x86_64 1:1.12.2-3.el7 @epel 1.5 M 为依赖而移除: nginx-all-modules noarch 1:1.12.2-3.el7 @epel 0.0 nginx-mod-http-geoip x86_64 1:1.12.2-3.el7 @epel 21 k nginx-mod-http-image-filter x86_64 1:1.12.2-3.el7 @epel 24 k nginx-mod-http-perl x86_64 1:1.12.2-3.el7 @epel 54 k nginx-mod-http-xslt-filter x86_64 1:1.12.2-3.el7 @epel 24 k nginx-mod-mail x86_64 1:1.12.2-3.el7 @epel 99 k nginx-mod-stream x86_64 1:1.12.2-3.el7 @epel 157 k 事务概要 ====================================================================================================== 移除 1 软件包 (+7 依赖软件包) 安装大小:1.9 M 是否继续?[y/N]:

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/114739.html

(0)
上一篇 2025-12-07 07:10
下一篇 2025-12-07 07:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信