星空

人生不仅有眼前的苟且,还有诗和远方.

0%

nginx配置https和跨域设置

为了网站快速响应,经常需要将前端页面放在cdn上,此时就需要后端服务支持跨域访问,所以

记录一下在tengine上的配置,用于集中管理多个服务和支持服务的跨域访问设置。关于nginx的安装可以参照 https://blog.bosong.online/2018/10/14/69BBBB0AC794451BBEDBA9211FD7F4B1

第一步 将配置文件进行分离

使用vi nginx.conf编辑nginx的配置文件,改成如下配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#user  nobody;
worker_processes 1;

error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
error_log "pipe:rollback logs/error_log interval=1d baknum=7 maxsize=2G";

pid logs/nginx.pid;


events {
worker_connections 1024; #根据实际情况进行修改
}


http {
include 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 "pipe:rollback logs/access_log interval=1d baknum=7 maxsize=2G" main;
sendfile on;
keepalive_timeout 65;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 8m;
tcp_nopush on;
gzip on;
//将所有的后端服务的配置都放在domain文件夹中管理
include domain/*.conf;
}

第二步 创建单独的配置文件,以nacos.conf为例

nginx/conf文件夹下创建domaincert文件夹,然后将nacos.conf放入domain`文件夹中

  • domain 存放单个服务的配置文件
  • cert 如果网站是https,将相关证书放入cert文件夹中

nacos.conf配置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
upstream nacos_server {
server 127.0.0.1:8448 weight=1;
server 127.0.0.1:8449 weight=2;
}
# http 强制跳转https
server {
listen 80;
server_name nacos.bosong.online;
rewrite ^ https://$http_host$request_uri? permanent;
}
server {
listen 443 ssl;
server_name nacos.bosong.online;
charset utf-8;
#单独的域名访问日志
access_log logs/config.access.log main;
#放置证书文件
ssl_certificate cert/config.pem;
ssl_certificate_key cert/config.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
#跨域配置-允许当前的域名访问
add_header Access-Control-Allow-Origin '$http_origin';
#允许携带凭证
add_header Access-Control-Allow-Credentials 'true';
#允许请求类型-根据实际情况自定义
add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS, PUT, DELETE';
#允许携带的请求头,根据网站实际情况修改
add_header Access-Control-Allow-Headers 'Cookie,Set-Cookie,x-requested-with,content-type,Authorization,accessToken,authorization,accesstoken';
#需要代理的后端服务,可负载均衡
proxy_pass http://nacos_server;
#OPTIONS请求直接返回200或者204即可
if ($request_method = 'OPTIONS') {
return 200;
}
}
}

更加深入的探索

在这里没有对安全性方面进行加强,如果网站需要更高安全性,可以根据实际需要在配置中增加安全性的相关配置。