初始化linux-nginx的配置详解-五个作用各自的配置

分别说一下,五个功能怎么实现
1.HTTP服务器:只能放静态文件
2.动静分离:上面做静态的,下边转发动态的,就是常说的动静分离
3.反向代理:就是代理外网服务器的意思
4.正向代理:就是代理内网服务器的意思
5.负载均衡:这个不用说了吧
PS:正向代理和反正代理的区别,看https://www.cnblogs.com/Anker/p/6056540.html


HTTP服务器:
#############开始#############
worker_processes 1;
events {
}
http {
server {
监听的端口,必不可少
listen 80 default_server;
# 监听的路径,所有路径
location /{
# 转到什么路径
root /usr/apache-tomcat-7.0.90_8005_8080_8009/webapps/;
}
}
}
#############结束#############
这就是最简练的配置,监听什么端口转到什么路径处理
当然你还可以搞事情
#############开始#############
worker_processes 1;
events {
}
http {
server {
listen 80 default_server;
# 这就监听了特定路径
# 这边要注意一个事情,最终转到的路径是/usr/apache-tomcat-7.0.90_8005_8080_8009/webapps/html,他会把配置的路径一起算进去,昨天就卡在这
location /html{
root /usr/apache-tomcat-7.0.90_8005_8080_8009/webapps/;
}
# 这就监听了特定的文件类型
# 他是用正则来匹配的
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)$ {
root /usr/apache-tomcat-7.0.90_8005_8080_8009/webapps/resources;
#cache 这个是缓存的意思
expires 3d;
}
location /{
root /usr/apache-tomcat-7.0.90_8005_8080_8009/webapps/;
}
}
}
#############结束#############
可以监听特定文件类型也就意味着可以实现动静分离了
动静分离配置:
#############开始#############
worker_processes 1;
events {
}
http {
server {
listen 80 default_server;
# 静态走这里
location ~ .*\.(html|htm)$ {
root /usr/apache-tomcat-7.0.90_8005_8080_8009/webapps/;
}
# 这个是网站的WEB-INF目录,不能直接访问的,也给设置一下
location ~ ^/(WEB-INF)/ {
deny all;
}
# 注释的就是动态请求,不过我部署上去的是一个test-servlet项目,就匹配这个了
# 我的测试请求地址是http://192.168.137.128/test-servlet/helloworld,没差别
#location ~ .*\.(jsp|do|action)$
location /test-servlet {
# 相当于 静态的root
proxy_pass http://localhost:8081/test-servlet;
}
# 这是状态码匹配
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
#############结束#############
动态的配置里还有很多项,我并没有一一列举出来,只给出最精炼的配置,还要搞事情自己查查看,最精炼连40*,50*,WEB-INF都没有
反向代理配置:
#############开始#############
worker_processes 1;
events {
}
http {
upstream proxy-8080 {
server localhost:8080;
}
server {
charset utf-8;

listen 80 default_server;

location ~ .*\.(html|htm)$ {
proxy_pass http://proxy-8080;
}
}
}
#############结束#############
就是这么简单。声明一个代理服务器
代理这个服务器的匹配用匹配html文件规则,区别于之前root一个是直接以http服务器的方式指到的某一个位置,现在使用调用服务的方式
负载均衡配置
#############开始#############
worker_processes 1;
events {
}
http {
upstream test-servlet-region {
server localhost:8081 weight=1;
server localhost:8082 weight=1;
server localhost:8083 weight=1;
}
server {
charset utf-8;

listen 80 default_server;

#location ~ .*\.(jsp|do|action)$
location /test-servlet {
proxy_pass http://test-servlet-region/test-servlet;
}
}
}
#############结束#############
结束。定义一个服务集群,然后在匹配规则上匹配/test-servlet,其实就是动态的意思。
然后会去集群挑一个服务器来执行
这边会设计一个分布式的问题,这就要说到ng是怎么挑服务器的
看到这个配置没有weight=1;这是使用权重的方式来选择使用哪个服务器
当然还有别的算法
rr轮询(默认)| weight(权重)| ip_hash | fair(第三方)| url_hash(第三方)| least_conn | consistent_hash
没有一一列举
值得一提的是ip_hash貌似能解决session问题,可能后面还要用到
正向代理
#############开始#############
worker_processes 1;
events {
}
http {
server {
charset utf-8;

listen 80 default_server;

location /baidu {
resolver localhost:8081;
proxy_pass http://$host$remote_port$args;
#正向代理没有成功,卡住,不管他,气~~~
}
}
}
#############结束#############
$host,$remote_port,$args是nginx的全局变量
具体可以看链接https://www.cnblogs.com/AloneSword/archive/2011/12/10/2283483.html


正向代理和反向代理的区别:
如果你们有去查就都知道,这边顺便提一下
正向代理的请求是从服务器发出去的。
反向代理的请求是从外界发过来的的。

上面两句话的意思是,代理的对象不一样。
正向代理是你的租房中介,是你的房东内线,帮你找到最便宜的最好的房子。
反向代理是你们项目组长,看着你们的的能力给你们发任务。

总结:
我目前测试的配置都是按照最精炼的来,其实ng还可以做很多事情,但不外乎套着这些壳。
还有比如配置什么压缩,ssh(https)的,还有很多,我都没有仔细列出来,不过通过这两天测试,至少我看得懂这些配置,所以在遇到应该也不难了。
希望你们也是如此

猜你喜欢

转载自www.cnblogs.com/zhuangly/p/9754437.html