刚开始做这个网站的时候,只有一个定时任务jar包,每天定时给指定用户发短信,后来觉得其他人可能也需要这种服务,在其基础上二次开发,可扩展多任务,多用户定时任务,赚了一点点,这时候已经是部署在tomcat上了,端口占用80; 后来想自己做博客,但是博客想要使用主域名,即原服务需要修改端口,但是这种形式容易忘记端口,还需要去防火墙重新放开一个端口,想的是一个二级域名可以直接访问,这时候想到Nginx!
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
从配置文件开始到 events 块之间的内容,主要会设置一些影响nginx 服务器整体运行的配置指令,主要包括配 置运行 Nginx 服务器的用户(组)、允许生成的 worker process 数,进程 PID 存放路径、日志存放路径和类型以 及配置文件的引入等。
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
这是 Nginx 服务器并发处理服务的关键配置,worker_processes 值越大,可以支持的并发处理量也越多,但是 会受到硬件、软件等设备的制约。
events {
worker_connections 1024;
}
events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 work process 下的网络连接进行序列化,是否 允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个 word process 可以同时支持的最大连接数等。 上述例子就表示每个 work process 支持的最大连接数为 1024. 这部分的配置对 Nginx 的性能影响较大,在实际中需要灵活配置。
http {
include /etc/nginx/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 /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
upstream boke {
server 127.0.0.1:8090;
}
upstream music {
server 127.0.0.1:8081;
}
server{
listen 80;
server_name bqeysq.com; # 此处填写你分配的二级域名,博客短域名
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection "";
proxy_pass http://boke; # 你本机的提供http服务的地址
}
}
server{
listen 80;
server_name www.bqeysq.com; # 此处填写你分配的二级域名,博客长域名
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection "";
proxy_pass http://boke; # 你本机的提供http服务的地址
}
}
# server{
# listen 80;
# server_name easy.bqeysq.com; # 此处填写你分配的二级域名,定时任务
# location / {
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Host $http_host;
# proxy_set_header X-Nginx-Proxy true;
# proxy_set_header Connection "";
# proxy_pass http://127.0.0.1:8080; # 你本机的提供http服务的地址
# }
# }
server{
listen 80;
server_name music.bqeysq.com; # 此处填写你分配的二级域名,音乐服务
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection "";
proxy_pass http://music; # 你本机的提供http服务的地址
}
}
server{
listen 80;
server_name web.bqeysq.com; # 此处填写你分配的二级域名,web绘画服务
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection "";
proxy_pass http://music/websocket-1.0-SNAPSHOT/contro/a; # 你本机的
# 提供http服务的地址
}
}
}
http模块从外到内有http块、server块、location块,同时各个模块有各自的属性元素。 整体结构
http{
server{
location {
}
location {
}
}
server{
location {
}
location {
}
}
}
定义上游服务器集群,在反向代理中proxy_pass使用,用于负载均衡。例:
upstream boke{
ip_hash;
server 192.168.0.1;
server 192.168.0.2:8080 max_fails=5 fail_timeout=30s;
server 192.168.0.3 down;
}
server {
location /{
proxy_pass http://boke;
}
}
最⾼优先级(=) 第⼆优先级(^~) 第三优先级(按照顺序匹配~,~*) 第四优先级(/)
请求限制 限制请求的方法 limit_except method {…},limit_except后跟不允许的方法,括号为可限制ip,同时注意请求方法的包含原则,如限制了GET方法,则同时也就限制了HEAD方法。如
limit_except GET {
allow 192.168.0.1/32;
deny all;
}
即禁止除192.168.0.1/32地址外的,方法为GET或HEAD的请求
proxy_method=POST; 表示不管请求是什么方法,转发后的方法为POST。
proxy_pass http://boke; # 你本机的提供http服务的地址 注意:转发时,默认不会带上原求的Host头部,若想带上,则需加上配置 proxy_set_header Host $host;
配置请求头header(包括请求行和请求头部)的内存buffer大小 client_header_buffer_size默认为client_header_buffer_size 1k ,即1k大小。当超过时,由下面的超大请求内存 large_client_header_buffers来决定是否抛错。
配置超大请求header的内存buffer大小 large_client_header_buffers后跟buffer的个数和每个buffer的大小,默认为large_client_header_buffers 4 8k,即4个buffer,每个buffer为8k。 当请求行(即是协议+方法+地址)大于单个buffer大小时,则返回414(requst uri too large),当请求中的单个header大于了单个buffer大小,则返回400(bad request)。 请求行+请求头部 超过 buffer个数*单个buffer大小也会出错的。
限制请求体大小 client_max_body_size ,如 client_max_body_size 10m; 即限制请求体最大为10m,默认值为1m。超过则发送403( reques entity to large)响应。
当路径为/时,通常会返回首页,默认为index.html页面,如:
location / {
root path;
index /index1.html /index2.html /index3.html;
}
注意:index后可跟多个地址,返回时,则返回第一个可访问的首页。示例中,则返回地址为path/index1.html。
error_page后跟返回码和重定向地址,如:
server {
error_page 404 /404.html;
error_page 400 = 200 /404.html;
error_page 403 = /404.html;
error_page 405 406 /404.html;
location = /404.html {
proxy_pass http://192.168.0.1/404.html;
}
}
注意: error_page可跟多个返回码; 虽然重定向了,但返回码到客户端是不变的。不过,可以通过=来改,=后接新的返回码,后也可以不跟返回码,让重定向后的请求决定。
默认为client_header_timeout 60,即读取头部超时时间为60秒,超时由返回408(request time out)。
默认为client_body_timeout 60,即读取请求体超时时间为60秒。
默认为send_timeout 60,即发送超时时间为60秒。
默认为 keepalive_timeout 75
默认为 keepalive_requests 100 ,即一个连接上最多可发送100次请求
设置DNS解析地址 resolver,后地址,可多个,如:resolver 192.168.0.1 192.168.0.2
访问bqeysq.com域名时转到本地8090端口
upstream boke {
server 127.0.0.1:8090;
}
upstream music {
server 127.0.0.1:8081;
}
server{
listen 80;
server_name bqeysq.com; # 此处填写你分配的二级域名,博客短域名
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection "";
proxy_pass http://boke; # 你本机的提供http服务的地址
}
}
server{
listen 80;
server_name www.bqeysq.com; # 此处填写你分配的二级域名,博客长域名
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection "";
proxy_pass http://boke; # 你本机的提供http服务的地址
}
}
server{
listen 80;
server_name music.bqeysq.com; # 此处填写你分配的二级域名,音乐服务
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection "";
proxy_pass http://music; # 你本机的提供http服务的地址
}
}
server{
listen 80;
server_name web.bqeysq.com; # 此处填写你分配的二级域名,web绘画服务
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Connection "";
proxy_pass http://music/websocket-1.0-SNAPSHOT/contro/a; # 你本机的
# 提供http服务的地址
}
}
}
可以通过博客的音乐及绘画墙看其他两项服务!