什么是nginxnginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定,所以现在很多知名公司都在使用nginx。nginx应用场景1、http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。2、虚拟主机。可以实现在一台服务器上虚拟出多个网站。例如个人网站使用的虚拟主机。
3、反向代理、负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群,可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
关闭nginx:方法1:命令窗口进入到nginx安装目录,输入命令nginx -s stop
方法2:在进程中关掉
应用场景:
需求1:
在一台服务器上部署两个tomcat项目,都想共用一个端口号80,但是一台服务器tomcat端口号不能重复,那么这个问题怎么解决?
nginx.conf 配置:server { listen 80; server_name www.edu.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://127.0.0.1:8080 index index.html index.htm; } }server { listen 80; server_name www.order.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://127.0.0.1:8081 index index.html index.htm; } }
※ listen:监听的端口号 server_name:页面显示的服务名 proxy_pass:被转发到真实的服务器的地址需求2:nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负责配置将请求转发至tomcat服务器(案例两台tomcat服务器内容一样)。nginx负责均衡服务器:127.0.0.1tomcat1服务器:127.0.0.1:8080tomcat2服务器:127.0.0.1:8082
※ 真实环境中nginx、tomcat服务器是分开的。在host文件中添加本地域名 127.0.0.1 www.edu.com nginx.conf配置负责均衡的权重: upstream tomcatserver1{ server 127.0.0.1:8080 weight=2; server 127.0.0.1:8082 weight=1; }upstream:表示负责均衡的配置tomcatserver1:定义的服务名weight:权重,默认为1,权重越高,处理请求越多proxy_pass http://tomcatserver1 :转发到定义的服务,然后随机分配到里面的两台服务器上的其中一台
nginx.conf 配置:
upstream tomcatserver1{ server 127.0.0.1:8080 weight=1; server 127.0.0.1:8082 weight=1; } server { listen 80; server_name www.edu.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://tomcatserver1 index index.html index.htm; } }实现session共享,启动redis,启动nginx
pom.xml
<!-- 引入redis的依赖包 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency> <!-- spring session与redis应用基本环境配置--> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency> import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; /** * 这个类配置redis服务器的连接 * maxInactiveIntervalInSeconds 为springsession的超时时间,单位:秒 * Created by yz on 2018/04/06. */ @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800) public class SessionConfig { @Value("${redis.hostname:localhost}") String HostName; @Value("${redis.port:6379}") int port; @Bean public JedisConnectionFactory connectionFactory(){ JedisConnectionFactory connection = new JedisConnectionFactory(); connection.setPort(port); connection.setHostName(HostName); return connection; } } import org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer; /** * 初始化Session配置 * Created by yz on 2018/04/06. */ public class SessionInitializer extends AbstractHttpSessionApplicationInitializer { public SessionInitializer(){ super(SessionConfig.class); } } import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; /** * Created by yz on 2018/04/06. */ @ComponentScan(basePackages = "com.session") @SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class); } }