栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

nginx学习笔记

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

nginx学习笔记

nginx学习笔记

一、nginx常用命令

  • 查看版本号
[root@localhost sbin]# ./nginx -v
nginx version: nginx/1.21.6
  • 查看nginx状态
[root@localhost sbin]# ps -ef | grep nginx
nginx      1218   1126  0 05:31 ?        00:00:00 php-fpm: pool www
nginx      1219   1126  0 05:31 ?        00:00:00 php-fpm: pool www
nginx      1220   1126  0 05:31 ?        00:00:00 php-fpm: pool www
nginx      1223   1126  0 05:31 ?        00:00:00 php-fpm: pool www
nginx      1227   1126  0 05:31 ?        00:00:00 php-fpm: pool www
root       6725   5310  0 05:48 pts/0    00:00:00 grep --color=auto nginx
[root@localhost sbin]# 

二、nginx配置文件
位置/usr/local/nginx/conf/nginx.conf
配置文件主要分为以下几个部分

  • 全局块: 配置影响nginx服务器整体运行的指令。比如nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等
  • events块:配置影响nginx服务器或与用户的网络连接
  • http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。这是服务器配置最频繁的部分

三、nginx配置实例1 反向代理
实现效果:打开浏览器,在浏览器地址栏输入地址www.123.com,跳转到linux系统tomcat主页面中

  1. linux系统安装tomcat,使用默认端口8080

进入192.168.184.138,下载tomcat包并进行解压

[root@localhost ~]# cd /usr/local/src
[root@localhost src]# wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.62/bin/apache-tomcat-9.0.62.exe
[root@localhost src]# tar -xvf apache-tomcat-9.0.62tar.gz
[root@localhost src]# ls
apache-tomcat-9.0.62  apache-tomcat-9.0.62.tar.gz  cmake-3.21.0  cmake-3.21.0.tar.gz  nginx-1.21.6  nginx-1.21.6.tar.gz  php-7.3.17  php-7.3.17.tar.gz
[root@localhost src]# 

查看jdk环境,系统自带一个,就不进行重装了

[root@localhost src]# java -version
openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
[root@localhost src]# 

进入bin目录启动tomcat服务

[root@localhost src]# cd apache-tomcat-9.0.62
[root@localhost apache-tomcat-9.0.62]# ls
bin  BUILDING.txt  conf  CONTRIBUTING.md  lib  LICENSE  logs  NOTICE  README.md  RELEASE-NOTES  RUNNING.txt  temp  webapps  work
[root@localhost apache-tomcat-9.0.62]# cd bin
[root@localhost bin]# ls
bootstrap.jar  catalina-tasks.xml  commons-daemon.jar            configtest.sh  digest.sh     setclasspath.bat  shutdown.sh  tomcat-juli.jar       tool-wrapper.sh
catalina.bat   ciphers.bat         commons-daemon-native.tar.gz  daemon.sh      makebase.bat  setclasspath.sh   startup.bat  tomcat-native.tar.gz  version.bat
catalina.sh    ciphers.sh          configtest.bat                digest.bat     makebase.sh   shutdown.bat      startup.sh   tool-wrapper.bat      version.sh
[root@localhost bin]# ./startup.sh
Using CATALINA_BASE:   /usr/local/src/apache-tomcat-9.0.62
Using CATALINA_HOME:   /usr/local/src/apache-tomcat-9.0.62
Using CATALINA_TMPDIR: /usr/local/src/apache-tomcat-9.0.62/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/src/apache-tomcat-9.0.62/bin/bootstrap.jar:/usr/local/src/apache-tomcat-9.0.62/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
[root@localhost bin]# 

查看日志看是否启动成功

[root@localhost bin]# cd ..
[root@localhost apache-tomcat-9.0.62]# cd logs
[root@localhost logs]# ls
catalina.2022-05-11.log  catalina.out  host-manager.2022-05-11.log  localhost.2022-05-11.log  localhost_access_log.2022-05-11.txt  manager.2022-05-11.log
[root@localhost logs]# tail -f catalina.out
11-May-2022 19:16:29.350 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/src/apache-tomcat-9.0.62/webapps/docs]
11-May-2022 19:16:29.366 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/src/apache-tomcat-9.0.62/webapps/docs] has finished in [15] ms
11-May-2022 19:16:29.366 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/src/apache-tomcat-9.0.62/webapps/examples]
11-May-2022 19:16:29.576 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/src/apache-tomcat-9.0.62/webapps/examples] has finished in [209] ms
11-May-2022 19:16:29.576 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/src/apache-tomcat-9.0.62/webapps/host-manager]
11-May-2022 19:16:29.595 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/src/apache-tomcat-9.0.62/webapps/host-manager] has finished in [19] ms
11-May-2022 19:16:29.595 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/src/apache-tomcat-9.0.62/webapps/manager]
11-May-2022 19:16:29.632 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/src/apache-tomcat-9.0.62/webapps/manager] has finished in [37] ms
11-May-2022 19:16:29.635 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
11-May-2022 19:16:29.646 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [529] milliseconds

开放8080端口,其他端口已经提前开了,比如80/tcp 8081/tcp 8082/tcp 9001/tcp

[root@localhost logs]# firewall-cmd --add-port=8080/tcp --permanent
success
[root@localhost logs]# systemctl restart firewalld
[root@localhost logs]# firewall-cmd --reload
success
 [root@localhost conf]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: dhcpv6-client http ssh
  ports: 8080/tcp 80/tcp 8081/tcp 8082/tcp 9001/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	
You have new mail in /var/spool/mail/root
[root@localhost conf]# 

在本地浏览器输入http://192.168.184.138:8080,查看是否安装成功

  1. 对windows的host文件进行配置,配置域名www.123.com映射的ip地址

找到host文件,进行编辑,最后一行加上ip 域名

  1. 在nginx进行请求转发的配置(即反向代理配置)

找到nginx配置文件/usr/local/nginx/conf/nginx.conf

[root@localhost src]# cd /usr/local/nginx/conf
[root@localhost conf]# ls
fastcgi.conf          fastcgi_params          koi-utf  mime.types          nginx.conf          scgi_params          uwsgi_params          win-utf
fastcgi.conf.default  fastcgi_params.default  koi-win  mime.types.default  nginx.conf.default  scgi_params.default  uwsgi_params.default
[root@localhost conf]# vim nginx.conf

把sever_name改成192.168.184.138
在location中添加proxy_pass http://127.0.0.1:8080;

启动nginx进行测试,在启动时报错nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use),是因为80端口被占用,使用fuser -k 80/tcp杀死进程即可

[root@localhost conf]#  /usr/local/nginx/sbin/nginx
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[root@localhost conf]# fuser -k 80/tcp
80/tcp:               1156  1222  1224  1225  1226 11227 11228 11231 11232 11233 11234
[root@localhost conf]#  /usr/local/nginx/sbin/nginx
[root@localhost conf]# ps -ef | grep nginx
nginx      1227   1127  0 19:01 ?        00:00:00 php-fpm: pool www
nginx      1230   1127  0 19:01 ?        00:00:00 php-fpm: pool www
nginx      1231   1127  0 19:01 ?        00:00:00 php-fpm: pool www
nginx      1233   1127  0 19:01 ?        00:00:00 php-fpm: pool www
nginx      1236   1127  0 19:01 ?        00:00:00 php-fpm: pool www
root      19547      1  0 20:20 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody    19548  19547  0 20:20 ?        00:00:00 nginx: worker process
root      20151   3779  0 20:23 pts/1    00:00:00 grep --color=auto nginx
[root@localhost conf]# 

浏览器进行测试,www.123.com直接访问的是192.168.184.138:80,即nginx的80端口,而通过80端口,nginx转发到了8080端口,所以访问到了tomcat的192.168.184.138:8080

四、nginx配置实例2 反向代理
实现效果:使用nginx反向代理,根据访问的路径跳转到不同端口的服务中
nginx监听端口为9001
访问http://http://192.168.184.139:9001/edu/ 直接跳转到127.0.0.1:8080
访问http://http://192.168.184.139:9001/vod/ 直接跳转到127.0.0.1:8081

  1. 准备两个tomcat服务器,一个8080端口,一个8081端口

8080的刚才已经弄好了,所以再准备一个8081就可以
在/usr/local/src下新建一个tomcat8081文件夹,放入tomcat安装包并进行解压
修改这个tomcat的配置文件/usr/local/src/tomcat8081/apache-tomcat-9.0.62/conf/server.xml,把端口改成8081

[root@localhost apache-tomcat-9.0.62]# cd conf
[root@localhost conf]# ls -al
total 232
drwx------. 2 root root    238 Mar 31 07:34 .
drwxr-xr-x. 9 root root    220 May 12 00:27 ..
-rw-------. 1 root root  12953 Mar 31 07:34 catalina.policy
-rw-------. 1 root root   7308 Mar 31 07:34 catalina.properties
-rw-------. 1 root root   1400 Mar 31 07:34 context.xml
-rw-------. 1 root root   1149 Mar 31 07:34 jaspic-providers.xml
-rw-------. 1 root root   2313 Mar 31 07:34 jaspic-providers.xsd
-rw-------. 1 root root   4144 Mar 31 07:34 logging.properties
-rw-------. 1 root root   7580 Mar 31 07:34 server.xml
-rw-------. 1 root root   2756 Mar 31 07:34 tomcat-users.xml
-rw-------. 1 root root   2558 Mar 31 07:34 tomcat-users.xsd
-rw-------. 1 root root 172359 Mar 31 07:34 web.xml
[root@localhost conf]# vim server.xml


修改后启动tomcat

[root@localhost conf]# vim server.xml
[root@localhost conf]# cd ..
[root@localhost apache-tomcat-9.0.62]# cd bin
[root@localhost bin]# ls
bootstrap.jar  catalina-tasks.xml  commons-daemon.jar            configtest.sh  digest.sh     setclasspath.bat  shutdown.sh  tomcat-juli.jar       tool-wrapper.sh
catalina.bat   ciphers.bat         commons-daemon-native.tar.gz  daemon.sh      makebase.bat  setclasspath.sh   startup.bat  tomcat-native.tar.gz  version.bat
catalina.sh    ciphers.sh          configtest.bat                digest.bat     makebase.sh   shutdown.bat      startup.sh   tool-wrapper.bat      version.sh
[root@localhost bin]# ./startup.sh
Using CATALINA_BASE:   /usr/local/src/tomcat8081/apache-tomcat-9.0.62
Using CATALINA_HOME:   /usr/local/src/tomcat8081/apache-tomcat-9.0.62
Using CATALINA_TMPDIR: /usr/local/src/tomcat8081/apache-tomcat-9.0.62/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/src/tomcat8081/apache-tomcat-9.0.62/bin/bootstrap.jar:/usr/local/src/tomcat8081/apache-tomcat-9.0.62/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
[root@localhost bin]#

在浏览器看看8080和8081能否访问

  1. 创建文件夹和测试页面
    tomcat8080下的webapps创建一个edu文件夹
    tomcat8081下的webapps创建一个vod文件夹
[root@localhost bin]# cd /usr/local/src/apache-tomcat-9.0.62/webapps
[root@localhost webapps]# mkdir edu
[root@localhost webapps]# cd /usr/local/src/tomcat8081/apache-tomcat-9.0.62/webapps
[root@localhost webapps]# mkdir vod
[root@localhost webapps]# 

在两个webapp下分别写两个html文件进行测试


8081的也类似

  1. 找到nginx的配置文件/usr/local/nginx/conf/nginx.conf进行配置

添加这部分代码

记得开放端口号,这里之前已经开放过了

[root@localhost conf]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: dhcpv6-client http ssh
  ports: 8080/tcp 80/tcp 8081/tcp 8082/tcp 9001/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	
[root@localhost conf]# 

重启nginx

[root@localhost conf]# cd /usr/local/nginx
[root@localhost nginx]# cd sbin
[root@localhost sbin]# ls
nginx
[root@localhost sbin]# ./nginx -s stop
[root@localhost sbin]# ./nginx
[root@localhost sbin]# 

在浏览器中输入网址测试


五、nginx配置实例3 负载均衡
实现效果:浏览器地址栏输入地址http://192.168.184.139:9001/edu/a.html,负载均衡效果,平均8080和8081端口中

  1. 准备两台tomcat服务器,一台8080,一台8081
    这点在前面就准备过了,所以不用管了
  2. 在两台tomcat里面webapp目录中,创建名称是edu的文件夹,在edu文件夹中创建页面a.html,用于测试
  3. 在nginx配置文件中进行配置
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

在http中添加一个模块

再修改server部分

  1. 重启nginx
[root@localhost ~]# cd /usr/local/nginx/
[root@localhost nginx]# ls
client_body_temp  conf  fastcgi_temp  html  logs  proxy_temp  sbin  scgi_temp  uwsgi_temp
[root@localhost nginx]# cd sbin
[root@localhost sbin]# ls
nginx
[root@localhost sbin]# ./nginx -s stop
[root@localhost sbin]# ./nginx
[root@localhost sbin]# 
  1. 在浏览器中输入网址进行测试


刷新一下


再刷新又显示8080,可以看出请求分担到8080和8081中了

nginx分配服务器策略

  1. 轮询:这种方式是默认的分配方式,每个请求按时间顺序挨个分配到不同的后端服务器,如果出现某一台后端服务器down掉的情况,会自动进行剔除。

  2. weight:即权重分配,权重越大,服务器被分配的客户端请求就越多,默认weight是1

  3. ip_hash:每个请求按访问ip的hash结果分配,每个访客就会固定访问一个后端服务器,可以解决session共享的问题

  4. fair(第三方):这种分配方式是按服务器的响应时间来分配请求的,响应时间短的优先分配

    六、nginx配置实例4 动静分离
    动静分离的目的是提高网站的响应速度,减轻程序服务器(Tomcat,Jboss等)的负载,对于静态资源,如图片、js、css等文件,可以在反向代理服务器中进行缓存,这样浏览器在请求一个静态资源时,代理服务器就可以直接处理,而不用将请求转发给后端服务器。对于用户请求的动态文件,如servlet、jsp,则转发给Tomcat,Jboss服务器处理,这就是动静分离。
    常用方法是把静态文件设立成单独的域名,放在独立的服务器上

1.在linux系统中准备静态资源,用于后期访问

根目录下新建一个文件夹data,data下新建两个目录www和image,www下放一个html文件,image下放一个图片

[root@localhost ~]# cd /
[root@localhost /]# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@localhost /]# mkdir data
[root@localhost /]# cd data
[root@localhost data]# mkdir www
[root@lo.calhost data]# mkdir image
[root@localhost data]# ls
image  www
[root@localhost data]# 

2.修改nginx配置文件 vim /usr/local/nginx/conf/nginx.conf


autoindex on的作用就是在访问 /image 时,可以显示目录里面的内容
3.重启nginx
4.浏览器进行测试
https://192.168.184.139/image/1.jpg
https://192.168.184.139/www/a.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/880862.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号