Nginx常用配置
https://baijiahao.baidu.com/s?id=1642243866657041522&wfr=spider&for=pc 配置
https://www.jianshu.com/p/bc4396a45697 配置
https://www.cnblogs.com/chen-msg/p/8583648.html 配置
https://www.cnblogs.com/knowledgesea/p/5175711.html
location /test {
proxy_pass https://github.com;
}
代理127.0.0.1:8080/test =>/test (包含自身) 前面所有的也就是 127.0.0.1:8080/test
整个替换成 https://github.com
跨域说明: '/test' 说明接口路径中含/test这部分前面所有:包括自身(/test)部分,包括(ip,端口,其他/api/路径)都替换成target目标地址代理去访问。
Nginx的代理配置(六)
1
修改配置文件 nginx.conf
server {
listen 81;
server_name 192.168.10.9;
root /opt/case/wwwroot/host1;
index index.html index.php;
charset utf8;
access_log logs/host1.access.log;
}
server {
listen 80;
server_name ddd.cn;
location / {
root /home/project/pc;
index index.html index.htm index.php;
}
}
1. 最简反向代理配置
upstream my_server {
server 10.0.0.2:8080;
keepalive 2000;
}
server {
listen 80;
server_name 10.0.0.1;
client_max_body_size 1024M;
location /my/ {
proxy_pass http://my_server/;
proxy_set_header Host $host:$server_port;
}
}
server {
listen 80;
server_name localhost;
location / {
root /opt/my/html/pc/html/html;
index index.html;
}
location /sendTKL/ {
proxy_pass http://127.0.0.1:8688/water-tk-main/tklConvert/;
}
location /mytk/ {
proxy_pass http://127.0.0.1:8688/water-tk-main/;
proxy_set_header Host $host:$server_port;
}
}
server {
listen 8080;
# 用户访问 ip:8080/test 下的所有路径代理到 github
location /test {
proxy_pass https://github.com;
}
# 所有 /api 下的接口访问都代理到本地的 8888 端口
# 例如你本地运行的 java 服务的端口是 8888,接口都是以 /api 开头
location /api {
proxy_pass http://127.0.0.1:8888;
}
}
########### 每个指令必须有分号结束。#################
#user administrator administrators; #配置用户或者组,默认为nobody nobody。
#worker_processes 2; #允许生成的进程数,默认为1
#pid /nginx/pid/nginx.pid; #指定nginx进程运行文件存放地址
error_log log/error.log debug; #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
events {
accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on
multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
#use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
worker_connections 1024; #最大连接数,默认为512
}
http {
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型,默认为text/plain
#access_log off; #取消服务日志
log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式
access_log log/access.log myFormat; #combined为日志格式的默认值
sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
sendfile_max_chunk 100k; #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
keepalive_timeout 65; #连接超时时间,默认为75s,可以在http,server,location块。
upstream mysvr {
server 127.0.0.1:7878;
server 192.168.10.121:3333 backup; #热备
}
error_page 404 https://www.baidu.com; #错误页
server {
keepalive_requests 120; #单连接请求上限次数。
listen 4545; #监听端口
server_name 127.0.0.1; #监听地址
location ~*^.+$ { #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
root /wwwroot/host1; #根目录
index index.html index.htm index.php; #设置默认页
proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表
deny 127.0.0.1; #拒绝的ip
allow 172.18.5.54; #允许的ip
}
}
}
2
1、一个站点配置多个域名
server {
listen 80;
server_name aaa.cn bbb.cn;
}
server_name 后跟多个域名即可,多个域名之间用空格分隔
2、一个服务配置多个站点
server {
listen 80;
server_name aaa.cn;
location / {
root /home/project/pa;
index index.html;
}
}
server {
listen 80;
server_name bbb.cn ccc.cn;
location / {
root /home/project/pb;
index index.html;
}
}
server {
listen 80;
server_name ddd.cn;
location / {
root /home/project/pc;
index index.html;
}
}
基于Nginx虚拟主机配置实现,Nginx有三种类型的虚拟主机
基于IP的虚拟主机: 需要你的服务器上有多个地址,每个站点对应不同的地址,这种方式使用的比较少
基于端口的虚拟主机: 每个站点对应不同的端口,访问的时候使用ip:port的方式访问,可以修改listen的端口来使用
基于域名的虚拟主机: 使用最广的方式,上边例子中就是用了基于域名的虚拟主机,前提条件是你有多个域名分别对应每个站点,server_name填写不同的域名即可
3、静态资源缓存
请根据您的实际情况进行筛选
location ~ .*\.(?:js|css|jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm)$ {
expires 7d;
}
location ~ .*\.(?:htm|html)$ {
add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate";
}
这里注意:no-cache与no-store的区别,no-cache表示不缓存过期资源,缓存会向服务器进行有效处理确认之后处理资源,而no-store才是真正的不进行缓存。
4、开启gzip压缩
http {
gzip on; #开启gzip压缩功能
gzip_disable "MSIE [1-6]\.(?!.*SV1)"; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
gzip_proxied any; #无条件压缩所有结果数据
gzip_min_length 10k; #设置允许压缩的页面最小字节数; 这里表示如果文件小于10个字节,就不用压缩,因为没有意义,本来就很小.
gzip_comp_level 6; #设置压缩比率,最小为1,处理速度快,传输速度慢;9为最大压缩比,处理速度慢,传输速度快; 这里表示压缩级别,可以是0到9中的任一个,级别越高,压缩就越小,节省了带宽资源,但同时也消耗CPU资源,所以一般折中为6
gzip_buffers 16 8k; #设置压缩缓冲区大小,此处设置为16个8K内存作为压缩结果流缓存
gzip_http_version 1.1; #压缩版本
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; #制定压缩的类型,线上配置时尽可能配置多的压缩类型!
gzip_vary on; #选择支持vary header;改选项可以让前端的缓存服务器缓存经过gzip压缩的页面; 这个可以不写,表示在传送数据时,给客户端说明我使用了gzip压缩
}
还没有评论,来说两句吧...