nginx/conf/nginx.conf 文件 说明
#user nobody; #配置 worker 进程运行用户 默认 nobody
worker_processes 4 ; # 配置工作进程数目,推荐 cpu 的线程数或者核心数,2双核4线程 配置 4 为宜
#error_log logs/error.log; # 配置日志文件位置,需要的把注解去掉。
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid; # 进程pid 可在这个目录下查看,也可以通过 ps -ef | grep nginx 查看
#配置worker 的连接数 也就是 上面设置的worker_processes * worker_connections = nginx 支持的总连接数。只有硬件够好。nginx 最大可有支持 5w 并发。
events {
worker_connections 1024;
}
http {
include mime.types; # 支持的格式 (具体可以去 conf目录下查看 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; # 开启gzip 压缩输出
# 配置 tomcat_1 在 8888 端口
upstream tomcat1{
server 127.0.0.1:8888;
}
# 配置 tomcat_2 在 9999 端口
upstream tomcat2{
server 127.0.0.1:9999;
}
# 外网访问 www.myyuming.com/haha 代理到 Tomcat_1
server {
listen 80;
server_name www.myyuming.com/haha;
location / {
proxy_pass http://tomcat1;
}
#保措时跳转到 下面的对于页面。
error_page 404 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/nginx/html;
}
}
# 外网访问 www.myyuming.com/hehe 代理到 Tomcat_2
server {
listen 80;
server_name www.myyuming.com/hehe ;
location / {
proxy_pass http://tomcat2;
}
#保措时跳转到 下面的对于页面。
error_page 404 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/nginx/html;
}
}
# include /etc/nginx/conf/*.conf; # 表示可以配置子配置文件
#配置 https 服务
# 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;
# }
#}
}
配置完成后收益下面的命令检查配置是否正常:
命令:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -t
重启服务命令:
命令: /usr/local/nginx/sbin/nginx -s reload
配置nginx 静态资源
假设:这个liunx 云服务器的 域名为 www.xxx.com
举例:我在liunx 的 更目录下创建了一个 test文件夹。在里面创建了一个 hello.html 文件
命令: cd /
命令: mkdir test
命令: cd test
命令: mkdir hello
命令:vi /test/hello/hello.html
-----------------vi 编辑模式---------------------
编辑:按 i 进入 输入模式
编辑: 输入 hello world~~!
编辑:按 ESC --> 冒号--》 wq --> 回车。
--------------编辑nginx.conf配置文件--------------------
命令:iv /usr/local/nginx/conf/nginx.conf
编辑如下(找到nginx。conf server{…location …} 的 位置,修改这个test/hello/hello.html 为nginx 首页)
server {
... ....
location / { # / : 表示 网站的更目录 http://www.xxx.com
root /test/hello; # 根目录
index hello.html; #默认访问 首页的文件。
}
# 也可以配置其他的 这样访问地址就成了 http://www.xxx.com/hello
# 这里特别注意 /hello 会被当成路径来访问 nginx 实际访问地址是 /test/hello/hello.html(我在这里被坑了很久 T^T 大家一定要注意)
location /hello{
root /test;
index hello.html;
}
... ....
}
重启nginx 服务器:
命令:/usr/local/nginx/sbin/nginx -s reload
好了配置完成了,现在下面两个地址都可以访问这个网页了:
http://www.xxx.com
http://www.xxx.com/hello
配置nginx 为负载均衡
配置方式如下:
负载均衡模式:
一共有4种
轮询 (默认)
权重(图上 weight 就是权重方式) 通过 配置 weight, 进行轮询,3 就轮询3次 1就轮询1次。可根据不同的计算机硬件配置区分配
ip_hash:将ip地址hash后指定给某台服务器,以后这个用户就只访问这台服务器,可以解决session共享问题,缺点,如果某台服务器挂了,那么这个服务器上的所有session 也就没了,一般不使用。
最少连接:ngin会选择多个服务器中连接数最少的那一台,有点:智能,缺点:所有服务器配置必须一样,否则,可能 1核 和 8核 分配的就是一样的连接数。
服务器模式
upstream backserver{
server 192.168.0.0.1:8001;
server 192.168.0.0.1:8002 backup; #备份 当上面那台服务器挂了,才会使用这一台。否则不会访问。
}
upstream backserver{
server 192.168.0.0.1:8001;
server 192.168.0.0.1:8002 down; #意味这台服务器为 关闭状态,nginx 不会访问他,用于服务升级时可以使用。
}
动静分离
什么是动静分离: 这里涉及到 并发访问的问题。
由于 nginx 只是作为反向代理,消息转发,消耗是极小的,可以达到 5w并发量。而 tomcat 等服务器 需要处理动态数据。所以一台tomcat 并发访问一般在 500 以内,超过 250 的并发量 响应速度就会在1秒以上了。
所以为了减轻 tomcat的访问压力,我们将应用内的静态资源 访问使用 nginx 来处理。这样可以大大的减轻tomcat 的负担。
这里我以tomcat为例。
1、在 tomcat webapp 目录下创建一个 test 文件夹
webapp目录下 mkdir test
2、复制 tomcat 的 ROOT 文件的文件到 test 中去。
ROOT目录下 cp ./* ./../test
3、剪切test 文件中的tomcat.png 到 /home/static/test 目录下
test 目录下
mkdir -p /home/static/test
mv tomcat.png /home/static/test
4、配置 nginx .conf 文件
测试应用文件目录为:
应用部署: tomcat/webapps/test #test应用 8080 端口
静态资源: /home/static/test/ # test文件夹下放自己 test 是应用名称
这里test是应用名称
upstream www.test.com {
server 127.0.0.1:8080; #tomcat linux 下的访问地址。
}
# 这里特别要注意目录结构:
server{
location /test { #把应用名称 配置过来
proxy_pass http://www.test.com;
}
location ~.*\.(css|js|image|gif|png)$ {
root /home/static; #这里只写到 静态资源的上一层目录就行。
}
}
5、启动tomcat 和 nginx
nginx -s reload
6、这时你会发现你移除掉的tomcat.png 依然显示出来了。
##子配置文件: 在 conf文件加下 ,配置 xxx.conf 文件依然生效。
在配置文件最近下面 的 } 内加入
include /etc/nginx/conf/*.conf; # 表示可以配置子配置文件
}
server {
listen 82;
server_name open.liyuecd.com;
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443;
server_name open.liyuecd.com;
# ssl on;
ssl_certificate /etc/nginx/cert/open/open.liyuecd.com.pem;
ssl_certificate_key /etc/nginx/cert/open/open.liyuecd.com.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;
location / {
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X_Forward_For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_pass http://47.108.201.110:82/;
}
}