nginx has two main features:
1). it can work as a static web server(has much better performance than Tomcat)
2). nginx work as a reverse proxy(反向代理) server.
2.1 solve ajax cross origin problems
2.2 set up tomcat load leveling/load balancing
1. install nginx
1). install pre dependecies:
yum install -y gcc-c++
yum install -y pcre-devel
yum install -y zlib-devel
yum install -y openssl-devel
2). unzip nginx, and go inside nginx folder, and run:
./configure
make
make install
3). nginx takes port 80, open 80 port on firewall
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
4). check browser, http://ip
2. setup nginx to work as a static web server
2.1) edit nginx/conf/nginx.conf
```
location / {
root html;
index index.html index.htm;
}
```
2.2). configure gzip
conf/nginx.conf
```
# GZIP 配置
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/javascript text/css application/xml application/x-javascript text/javascript ;
gzip_vary on;
```
webpack配置
```
//vue.config.js
const CompressionPlugin = require("compression-webpack-plugin")
module.exports = {
devServer: {//代理配置
port: 8888, // 端口
proxy: {
'/api': {
target: 'https://sm.ms/api',
changeOrigin: true,
ws: true,
pathRewrite: {
'^/api': ''
}
}
}
},
configureWebpack: () => {//打包配置
if (process.env.NODE\_ENV === 'production') {
return {
plugins: \[
new CompressionPlugin({
test: /\\.js$|\\.html$|.\\css/, //匹配文件名
threshold: 10240,//对超过10k的数据压缩
deleteOriginalAssets: false //不删除源文件
})
\]
}
}
},
};
```
2.3) configure https
```
server {
listen 80;
server_name pipe.ccm.ink;#自己的域名
return 301 https://$host;
}
server {# 开启https
listen 443 ssl;
server_name pipe.ccm.ink;
charset utf-8;
ssl_certificate xxxx.pem;# 换为自己的证书
ssl_certificate_key xxxxx.key;# 换为自己的证书
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
作者:chen622
链接:https://pipe.ccm.ink/blogs/chen622/https://www.runoob.com/linux/nginx-install-setup.html
来源:Pipe
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
```
3. configure nginx to allow cross orgin access
front-end, it is running on port 80
back-end, it is running on port 8080
because they are running on different port, when front-end sends request to back-end, this is called cross orgin access.
we have two solutions to solve this problem:
1) [recommend]on backend, allow this cross orgin access.
configure for one controller
```
@CrossOrgin
@RestController
@RequestMapping("/test")
public class TestController {
}
```
configure for all controllers
```
package com.example.demo.config;
import static org.springframework.web.cors.CorsConfiguration.ALL;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
@ComponentScan(basePackages={"com.example.demo"})
public class SpringConfig {
//增加跨域权限配置
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
// 限制了路径和域名的访问
/*registry.addMapping("/api*").allowedOrigins("http://localhost:8081");*/
//设置允许跨域的路径
registry.addMapping("/**")
//设置允许跨域请求的域名
// .allowedOrigins(ALL)
//设置允许跨域请求的域名,如果想要传递cookie,就不能再用*
.allowedOrigins("http://localhost:9527")
//是否允许证书 不再默认开启
.allowCredentials(true)
//设置允许的方法
.allowedMethods(ALL)
//设置允许的header
.allowedHeaders(ALL)
//.exposedHeaders(HttpHeaders.SET_COOKIE, "token")
//跨域允许时间
.maxAge(3600);
registry.addMapping("/**")
//设置允许跨域请求的域名
// .allowedOrigins(ALL)
//设置允许跨域请求的域名,如果想要传递cookie,就不能再用*
.allowedOrigins("http://localhost:8081")
//是否允许证书 不再默认开启
.allowCredentials(true)
//设置允许的方法
.allowedMethods(ALL)
//设置允许的header
.allowedHeaders(ALL)
//.exposedHeaders(HttpHeaders.SET_COOKIE, "token")
//跨域允许时间
.maxAge(3600);
}
};
}
}
```
2) on frontend, set proxy to forward the request to backend.
on conf/nginx.conf
```
location /test/ {
proxy_pass http://localhost:8080/test/;
}
```
front-end code
```
axios.post('/test/emps',{
empno:that.empno,
ename:that.ename,
job:that.job
})
```
back-end code
```
@RestController
@RequestMapping("/test")
public class TestController {
@Autowired
private TestService testService;
@RequestMapping("/emps")
public List<Emp> getEmps(@RequestBody Emp condition)
{
return testService.getEmps(condition);
}
}
```
4. configure nginx to handle load leveling
4.1 preparation: prepare two applications:
1. one is deployed on the linux server
2. the other is deployed on the windows server
```
#config load leveling/load balancing
upstream tomcat_server
{
server localhost:8080;
server 10.25.37.2:8080;
}
server {
listen 80;
server_name localhost;
#config static web resource
location / {
root static;
index html/index.html html/index.htm;
}
#config cross orgin proxy
location /test/ {
proxy_pass http://tomcat_server/test/;
#must add this, otherwise, there is be 400 error
proxy_set_header Host $host;
#used to display responded server ip
add_header backendIP $upstream_addr;
add_header backendCode $upstream_status;
}
```
![](https://box.kancloud.cn/96953772265ca76c8e54e6c1861d78d5_555x330.png)
- 第一章 Linux
- 1. Linux安装和网络配置
- 2. Linux基本命令
- 3. Xshell和winscp
- 4. VIM编辑器
- 5. 安装软件
- 5.1 安装JDK
- 5.2 安装TOMCAT
- 5.3 安装MySql
- 5.4 安装Nginx
- 5.5 部署工程
- 第二章 Nginx
- 1. 安装Nginx
- 2. 配置Nginx
- 2.1 配置静态服务器
- 2.2 配置反向代理
- 2.3 配置负载均衡
- 2.4 配置动静分离
- 2.5 跨域访问
- 第三章 Redis
- 1. 安装Redis
- 2. JAVA操作Redis
- 3. Redis事务
- 4. Redis持久化
- 5. 主从复制和集群
- 6. Redis实现Session共享
- 第四章 MySQL主从复制
- 4.1 MyCat安装
- 4.2 MySQL主从复制
- 4.3MySQL读写分离
- 第五章 ActiveMQ
- 5.1 Queue
- 5.2 Topic
- 第六章 FastDFS图片服务器
- 第七章