nginx一点儿基础配置(一)

1. nginx配置https访问

  • 1.1 使用 nginx -V产看编译参数中是否含有 --with-http_ssl_module ,如果没有则继续操作,如果有则跳到1.6步。注意:nginx如果已经安装了其他模块,在安装新模块编译时,必须也要带上其他模块的编译参数,不然会丢弃掉其他模块! 编译参数就是通过nginx -V查看的!
  • 1.2 安装 OpenSSL

    yum -y install openssl openssl-devel
  • 1.3 在nginx的安装包目录下重新编译,注意不是 /usr/local/nginx/目录下,这是安装目录,不是安装包目录,编译要在安装包目录下进行,当然,安装目录下也没有configure这个可执行文件。

    ./configure --prefix=/usr/local/nginx --with-http_ssl_module
  • 1.4 继续在安装包目录下执行make命令进行编译,注意为了保险起见,不要执行 make install这样会重新安装nginx,虽然很多人说执行没有关系,不会覆盖 nginx.conf文件,但是防着点总归没有错。

    make
  • 1.5 在make完之后,先停掉nginx服务。在安装包目录中有一个objs目录(跟configure可执行文件平级),将objs目录下的nginx文件复制到 /usr/local/nginx/sbin/目录下,覆盖掉其中的nginx可执行文件(当然,这里重名或者备份之后再删除,做好备份),命令如下:

    # 将编译完成的 nginx可执行文件 复制到 nginx的安装目录下的 sbin中,覆盖掉其中的nginx
    cp /nginx安装包目录/objs/nginx /usr/local/nginx/sbin/
  • 1.6 将SSL证书复制到 /usr/local/nginx/conf/目录中,如下名称:

    证书名称.pem
    证书名称.key
  • 1.7 修改/usr/local/nginx/conf/nginx.conf文件

    server {
          listen       443 ssl;
          server_name   证书对应的域名;
          charset utf-8;
          ssl_certificate      证书名称.pem;
          ssl_certificate_key  证书名称.key;
    
          ssl_session_cache    shared:SSL:1m;
          ssl_session_timeout  5m;
    
          ssl_ciphers  HIGH:!aNULL:!MD5;
          ssl_prefer_server_ciphers  on;
    
          ...下面是配置 location 内容
    }
  • 1.8 启动nginx,使用https访问。
  • 1.9 将http请求转为 https请求

    # 在请求方式为 http的server中,所有的location上面添加如下代码
    rewrite ^(.*) https://$server_name$1 permanent;
    # 也可以自定义跳转的端口和路径 
    rewrite ^(.*) http://$server_name:82/manage$1 permanent;
    # 当post请求比变为get请求时,不要用上面的,用下面这个
    return 307 https://$host:82/manage$request_uri;

2. 一个server中配置多个静态资源的location时注意的问题

下面两个是静态资源的location,启动nginx没有问题,访问 https://XXXX/a.png 也没有问题,但是访问 https://XXXX/other/c.jpg 就出现问题了,访问不到。

location / { 
   root   /data/f;
   try_files $uri $uri/ /index.html;
}

location /other/ { 
   root   /data/f;
   try_files $uri $uri/ /index.html;
}

解决方法:
/other/节点中的 root 改为 alias,如下:

location / { 
   root   /data/f;
   try_files $uri $uri/ /index.html;
}

location /other { 
   alias   /data/f;
   try_files $uri $uri/ /index.html;
}

这样就可以正常访问了,如果出现问题,再 /other后面再加个/试试。

3. 请求体过大

一般传递文件时,如过文件比较大,则会报请求体过大的错误,在nginx配置扩一下容就行了,在
http节点下添加 client_max_body_size 100m;如下:

http {
    include       mime.types;  
    default_type  application/octet-stream; 
    client_max_body_size 100m;
    ...下面时其他配置和server
}

4.同一个端口保证http跟https同时访问

其实一个端口不可能同时满足http跟https同时访问,只是在http访问的时候进行了强转重定向成https,在server模块中添加错误码497进行重定向

error_page 497 =307 https://$host:84$request_uri;
# 详情可浏览: https://segmentfault.com/q/1010000043433837

一个男人!!!

51 声望
0 粉丝
0 条评论
推荐阅读
解决vue项目在nginx中配置location不是 / 的问题
在nginx中配置vue项目的时候,类似于location /XXX {}这种,会出现很多问题,比如404,403,刷新404等等情况,还是没有搞懂什么原因,不过却找到了解决方法,记录一下,防止忘记!

mahy阅读 318

Nginx常用配置及和基本功能讲解 | 京东云技术团队
作者:京东物流 殷世杰Nginx已经广泛应用于J-one和Jdos的环境部署上,本文对Nginx的常用的配置和基本功能进行讲解,适合Nginx入门学习。1 核心配置找到Nginx安装目录下的conf目录下nginx.conf文件,Nginx的基本功...

京东云开发者5阅读 580

封面图
http 和 https 的通信过程及区别
🎈 两者的区别端口: http 端口号是80, https 端口号是443传输协议: http 是超文本传输协议,属于明文传输; https 是安全的超文本传输协议,是经过 SSL 加密后的传输协议安全性: https 使用了 TLS/SSL 加密,...

tiny极客2阅读 3k评论 2

封面图
有了 NGINX 和 Kong,为什么还需要 Apache APISIX?
2021 年 5 月,云原生社区技术沙龙·广州站,API7.ai(支流科技)联合创始人 & CTO,Apache APISIX PMC 王院生在活动上做了《有了 NGINX 和 Kong,为什么还需要 Apache APISIX》的分享,以下是现场分享的文字版。...

API7_技术团队1阅读 4.4k

反向代理学习笔记(一) Nginx与反向代理绪论
作为一个沪漂程序员,听到代理这个词,我下意识的想到了中介,现在在上海已经很少能找到房东看房子了,基本上都是从中介那里看房,从这个角度来说中介代理了房东的部分职责,带你看房。在汉语词典中也是这么阐释...

北冥有只鱼2阅读 1k

封面图
Apache 中 ServerTokens 参数设置详解
ServerTokens 参数设置 http 头部返回的 apache 版本信息,可用的值和含义如下:ServerTokens 参数值意义ServerTokens Prod仅软件名称例如:apacheServerTokens Major包括主版本号例如:apache/2ServerTokens Min...

danielxue7阅读 3.4k

vue项目部署到阿里云服务器(windows - Nginx代理)
项目构成:前端:vue+vant-ui,数据库:mysql,后端:node.js部署方式:nginx代理一,首先要拥有自己的服务器,阿里,腾讯都可以,我用的是阿里的购买方式省略...购买完成后,会跳到实例界面,也就是你的服务器实...

墨城2阅读 761

一个男人!!!

51 声望
0 粉丝
宣传栏