先上nginx链接 http://nginx.org
nginx是用来做反向代理(域名 --> 服务:端口),这里可以给tomcat进行集群,tomcat只能承受几百连接数,使用nginx可以是网站的访问量上去,还可以用来做动静分离(动态资源:网站 静态资源:图片等)
然后准备好两个一样的项目,我就搭建了很简单的springboot的项目,保证能够访问 localhost:端口/服务名/index 访问到hello world
第一步:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Organize</groupId>
<artifactId>SecondDubbo</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>SecondDubbo Maven Webapp</name>
<url>http://maven.apache.org</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
</parent>
<build>
<finalName>baseframework</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!-- tomcat 的支持. -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.6.RELEASE</version>
</dependency>
<!--druid -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
在项目里面新建两个类
package com.java.two;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.support.SpringBootServletInitializer;
@ServletComponentScan
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})//不使用数据库连接
public class Application extends SpringBootServletInitializer{
private final Logger log = LoggerFactory.getLogger(this.getClass());
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
log.debug("springboot...");
return application.sources(Application.class);
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
package com.java.two.Index;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class TestController {
@RequestMapping("/index")
public String index(){
return "index";
}
}
再新建一个application.properties文件
server.port=8084
server.address=127.0.0.1
server.seesionTimeout=60
server.contextPath=/SecondDubbo
spring.mvc.view.prefix=/view/
spring.mvc.view.suffix=.jsp
在webapp下建view文件夹,在view下建index.jsp
<html>
<body>
<h2>Hello World! the first!</h2>
</body>
</html>
第二步:
复制上面的项目多一份,然后修改application.properties文件的server.port=8085
把index.jsp的the first 换成 the second(方便集群后后,知道是否成功,是否轮询两个服务)
第三步:
把两个服务启动(在appication类启动)
第四步:
修改nginx文件,在下载后的 nginx-1.13.9\conf 里面的 nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
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"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream java.com{
server localhost:8084 weight=1;
server localhost:8085 weight=2;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://java.com;
proxy_connect_timeout 600;
proxy_read_timeout 600;
}
#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;
# }
#}
}
这里主要修改两个地方
主要是给这两个端口做集群(本来通过localhost:8084/SecondDubbo/index localhost:8085/SecondDubbo/index来访问服务,使用这个后可以用localhost/SecondDubbo/index访问,隐去端口,还可以使用两个tomcat来负载访问)
还有一个地方
这里的proxy_pass http://java.com; 必须和上面的upstream后面跟着一致,server_name如果想要使用自己的域名,记得修改本机的hosts文件,进行端口和域名的映射。
第五步:可以到nginx-1.13.9这个文件夹下,双击打开ngnix.exe文件,开启服务,可以在任务管理器查看是否开启成功,没成功可以到nginx-1.13.9/logs/error.log查看报错信息。(报错的百度问题吧)
最后一步,测试
http://localhost/SecondDubbo/index
重复刷新几次!
成功!