0
点赞
收藏
分享

微信扫一扫

Nginx 安装 使用 负载配置

docker 安装nginx

docker pull nginx:1.22.0

docker run --name nginx -p 8008:80 -d nginx:1.22.0


mkdir -p /opt/resource/nginx/conf
mkdir -p /opt/resource/nginx/log
mkdir -p /opt/resource/nginx/html

docker cp nginx:/etc/nginx/nginx.conf /opt/resource/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /opt/resource/nginx/conf/conf.d
docker cp nginx:/usr/share/nginx/html /opt/resource/nginx/

docker rm -f nginx

docker run \
-p 8008:80 \
--name nginx \
-v /opt/resource/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /opt/resource/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /opt/resource/nginx/log:/var/log/nginx \
-v /opt/resource/nginx/html:/usr/share/nginx/html \
-d nginx:1.22.0

安装包 安装Nginx

https://altwongblog-1301531589.cos.ap-shanghai.myqcloud.com//2022/202203/nginx-1.22.0_1656605040463.tar.gz

yum -y install make zlib-devel gcc-c++ libtool openssl openssl-devel

mkdir /opt/resource/
tar -zxvf nginx-1.22.0.tar.gz
编译
cd nginx-1.22.0
./configure --prefix=/opt/resource/nginx-1.22.0
make && make install

可能没有 logs这个文件夹
mkdir logs
检查
/opt/resource/nginx-1.22.0/sbin/nginx -t

启动
/opt/resource/nginx-1.22.0/sbin/nginx -c /opt/resource/nginx-1.22.0/conf/nginx.conf

重启
/opt/resource/nginx-1.22.0/sbin/nginx -s reload

完成这是配置文件
vi /opt/resource/nginx-1.22.0/conf/nginx.conf


yum 安装Nginx

执行以下命令,添加Nginx到yum源。
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

添加完之后,执行以下命令,查看是否已经添加成功。
yum search nginx

添加成功之后,执行以下命令,安装Nginx。
sudo yum install -y nginx

执行以下命令安装stream模块。
yum install nginx-mod-stream --skip-broken

启动Nginx并设置为开机自动运行。
sudo systemctl start nginx.service
sudo systemctl enable nginx.service

在本地浏览器中输入服务器地址(ECS公网IP地址),查看安装是否成功。 如果出现下面页面,则表示安装成功。

image.png

https://support.huaweicloud.com/bestpractice-dcs/dcs-bp-0514001.html

服务转发 以访问minio为例

  • /etc/nginx/conf.d中 stream.conf
upstream backend {
	server 192.168.16.168:9001;
}

server {
	listen 9104;
	server_name 0.0.0.0;
		location / {
		proxy_pass http://backend;
	}
}
  • nginx.conf 配置
user root;
worker_processes auto;
pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}


stream {
	upstream minio {
		server 192.168.16.168:9001;
	}

	server {
		listen 9102;
		proxy_pass minio;
		proxy_connect_timeout 1h;
		proxy_timeout 1h;
	}
	
    server {
        listen 9106;
        proxy_pass 192.168.16.168:9001;
        proxy_socket_keepalive on
        proxy_timeout 60m
        proxy_connect_timeout 60s
    }
}


http {
    server {
        listen       80 default_server;
        include /etc/nginx/default.d/*.conf;
        location / {
        }
    }
}

# 查看端口是情况
# netstat -ano | grep 9106

nginx正则

= 表示精确匹配
^~ 表示uri以某个常规字符串开头,大多情况下用来匹配url路径,nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
~ 正则匹配(区分大小写)
~* 正则匹配(不区分大小写)
!~ 区分大小写不匹配
!~* 不区分大小写不匹配
/ 任何请求都会匹配

nginx 其他配置


server {
	listen       8081;
	server_name  0.0.0.0;

	add_header 'Access-Control-Allow-Origin' '*';
	add_header 'Access-Control-Allow-Credentials' 'true';


	# 静态资源
	location /demo {
		alias /root/frontend/demo;
		try_files $uri $uri/ /demo/index.html;
		proxy_set_header Host $http_host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		index index.html;
	}

	# 项目后端服务
	location /demob {
			proxy_pass http://192.168.16.166/;
	}

	location = /50x.html {
		root   html;
	}

}

nginx 负载均衡

10.Nginx负载均衡配置 - 简书 (jianshu.com)

## 在conf.d 中配置
upstream project-api {
	ip_hash;
    server 192.168.16.156:18080 weight=1 max_fails=3 fail_timeout=10s;
    #server 192.168.16.209:18080 weight=1 max_fails=3 fail_timeout=10s;
	keepalive 300;
}


upstream demo-api {
	ip_hash;
    server 192.168.16.156:18082 weight=1 max_fails=3 fail_timeout=10s;
    #server 192.168.16.209:18082 weight=1 max_fails=3 fail_timeout=10s;
	keepalive 300;
}


server {
	listen       80;
	server_name  0.0.0.0;
	charset utf-8;
	add_header 'Access-Control-Allow-Origin' '*';
	add_header 'Access-Control-Allow-Credentials' 'true';        

	# 后端负载入口
	location ~ /demo-api/ {
		proxy_redirect off;
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://demo-api;
	}
	
	# 后端负载入口
	location ~ /project-api/ {
		proxy_redirect off;
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://project-api;
	}
}

nginx 连接mysql 和 redis

  • 增加steam配置,与http同级,不是放在http里面!! 验证ok
stream {
	upstream mysqlc {
		server 192.168.16.168:3306 weight=5 max_fails=3 fail_timeout=30s;
	}
	server {
		listen 3305;#数据库服务器监听端口
		proxy_connect_timeout 600s;
		proxy_pass mysqlc;
	}
	
	upstream redisc {
		server 192.168.16.168:6379;
	}
	server {
		listen 6378;#redis服务器监听端口
		proxy_connect_timeout 600s;
		proxy_timeout 600s;
		proxy_pass redisc;
	}
}

https配置


server {
	 listen 80;
	 server_name kooed.hppts.net;
	 rewrite ^(.*)$ https://${server_name}$1 permanent;# 重定向到https
}

server {
	listen   443 ssl;
	server_name  kooed.hppts.net;

	ssl_certificate  /root/ssl/hppts-crt.pem;
	ssl_certificate_key  /root/ssl/hppts-key.key;

	ssl_ciphers  HIGH:!aNULL:!MD5;
	ssl_prefer_server_ciphers  on;
	
	location/ {
	}
}


举报

相关推荐

0 条评论