nginx配置https和跨域设置


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

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

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

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

#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配置如下

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;
                }
        }
}

更加深入的探索

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