大家好,欢迎来到IT知识分享网。
目录
1.首先输入命令 ps -ef | grep nginx检查一下nginx服务是否在运行。
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