首页 > 系统相关 >nginx开启ssl并把http重定向到https

nginx开启ssl并把http重定向到https

时间:2024-05-27 19:55:41浏览次数:32  
标签:http nginx server ssl proxy key localhost

前言

Nginx是一个非常强大和流行的高性能Web服务器。本文讲解Nginx如何整合https并将http重定向到https。

Nginx的特点

(1)热启动:例如当修改配置文件后,不需要停止与启动就可以让配置生效,命令:nginx -s reload

(2)高并发连接:顶住10万以上连接是没有问题的。

(3)低内存消耗:在高性能的同时,保持很低的内存消耗;

(4)响应请求快;

(5)高可靠性。

Nginx可以做哪些事呢?最常用的功能为下面三个:

(1)静态HTTP服务器,实现动静态分离

(2)反向代理

(3)负载均衡

安装与使用
CentOS使用下面命令进行安装与使用:

# 添加 Nginx 源
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

# 安装 Nginx
yum install -y nginx
# 启动 Nginx
systemctl start nginx.service
# 停止 Nginx
systemctl stop nginx.service
# 设置开机自启 Nginx
systemctl enable nginx.service
# 重新加载
nginx -s reload

Mac使用下面命令进行安装和使用:

# 查看是否有安装
brew info nginx
# 安装
brew install nginx
# 启动,默认端口为8080
nginx
# 停止
nginx -s stop
# 重新加载
nginx -s reload

安装完会有提供说明:
Docroot is: /usr/local/var/www
nginx will load all files in /usr/local/etc/nginx/servers/
就知道该在哪放网站资源和配置文件了。

整合https

  • 生成密钥文件
    先通过keytool生成PKCS12格式的密钥,然后通过openssl取出cert和key,具体命令如下:
# 生成PKCS12格式的密钥文件
keytool -genkey -alias localhost -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -storetype PKCS12 -keystore localhost.p12 -dname CN=localhost,OU=Test,O=pkslow,L=Guangzhou,C=CN -validity 731 -storepass changeit -keypass changeit

# 导出pem(certificate)
openssl pkcs12 -nokeys -in ./localhost.p12 -out localhost.pem

# 导出key
openssl pkcs12 -nocerts -nodes -in ./localhost.p12 -out localhost.key
  • 配置nginx.conf
    新建一个nginx.conf文件,把它放在配置加载目录上。要把密钥文件路径配置上去,具体配置如下:
server {
    listen 443 ssl;
    server_name localhost;
    
    ssl_certificate /key-path/localhost.pem;
    ssl_certificate_key /key-path/localhost.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on; 

    location / {
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_pass http://127.0.0.1:8000/;
    }
}

记得要替换key-path为具体的密钥文件的路径。

ssl_certificate:这个配置的是cert文件。

ssl_certificate_key:这个配置的是private key文件。

proxy_pass http://127.0.0.1:8000/:这个作用是把请求反向代理到这个地址上。

开启http并重定向到https

  • 开启http
    开启http很简单,直接把listen 80;加到listen 443 ssl;上面去就可以了。或者新加一个server配置,如下:
server {
    listen 443 ssl;
    server_name localhost;
    
    ssl_certificate /key-path/localhost.pem;
    ssl_certificate_key /key-path/localhost.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on; 

    location / {
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_pass http://127.0.0.1:8000/;
    }
}

server {
    listen 80;
    server_name localhost;

    location / {
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_pass http://127.0.0.1:8000/;
    }
}
  • 重定向到https的两种方式
    要把http重定向到https也很简单,具体可以使用两种配置来实现。

第一种方式使用return 301如下:

server {
    listen 80;
    server_name localhost;
    return 301 https://127.0.0.1$request_uri;
}

第二种方式使用rewrite如下:

server {
    listen 80;
    server_name localhost;
    rewrite ^(.*)$ https://$host$1 permanent;
}

转载至
https://www.cnblogs.com/larrydpk/p/12819231.html

标签:http,nginx,server,ssl,proxy,key,localhost
From: https://www.cnblogs.com/OpenSourceSite/p/18216373

相关文章

  • 通过adb设置雷电模拟器的HTTP代理
    连接雷电模拟器.\adbconnect127.0.0.1:5555获取路由地址,一般为172.16.1.2(这里我的笔记本显示是172.16.1.1,但是未设置成功,那就用172.16.1.2).\adb-s127.0.0.1:5555shell'iproutelisttableallscopeglobal|cut-F3'.\adb-s127.0.0.1:5555shellsettingsputgl......
  • 如何使用ADB shell设置Android设备的全局HTTP代理
    打开ADB调试这里使用蓝叠模拟器进行测试下载adbhttps://dl.google.com/android/repository/platform-tools-latest-windows.zip解压好,放哪都行在platform-tools目录下,右击空白处,选择“在终端中打开”开始操作建立连接.\adbconnectlocalhost:5555启动shell会话......
  • nginx配置文件
    nginx配置文件nginx配置文件全局块http块server块location块注意事项负载均衡配置SSL/TLS配置缓存配置日志配置调试与优化总结与扩展nginx配置文件nginx是一款高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器。其配置文件对于n......
  • Angular多环境打包项目并发布到nginx运行
    1:官网下载稳定版本Nginx1.26.0  2:先跑起来看是否异常,如果没有跑起来我们可以检查分析nginx的log日志3:项目路径如下: 4:前端多环境简单测试配置 5:路由配置简单测试数据constroutes:Routes=[{path:'',redirectTo:'/home',pathMatch:"full"},{......
  • 接口报错.w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework
    1、报文:.w.s.m.s.DefaultHandlerExceptionResolver:Resolved[org.springframework.http.converter.HttpMessageNotReadableException:JSONparseerror:Unexpectedcharacter('''(code39)):wasexpectingdouble-quotetostartfieldname;nestedex......
  • 使用OpenSSL生成证书和私钥文件
    使用OpenSSL生成证书和私钥文件,请按以下步骤操作:第1步:生成RSA私钥opensslgenrsa-outprivate_key.pem2048参数-out指定生成的私钥文件名,参数2048指定生成的RSA私钥以位为单位的长度,常见的取值:1024、2048、3072、4096,较长的密钥通常提供更高的安全性,但可能导致性能下降......
  • Nginx 配置文件使用指南
    Nginx的配置文件是对其进行各种设置和功能定义的关键。一、配置文件结构一般主要包括全局块、事件块和HTTP块等。二、全局块user:指定运行Nginx进程的用户和组。worker_processes:设置工作进程数量。三、事件块accept_mutex:决定连接处理方式。四、HTTP块server ......
  • Job for nginx.service failed because the control process exited with error code.
    使用systemctlstartnginx启动nginx的时候,报错:Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode.See“systemctlstat。我们可以通过命令查看nginx的配置文件是否修改正确[root@localhost/etc/nginx]$sudonginx-tnginx:[emerg]unexpec......
  • 宝塔:续签SSL证书报错Verification failed, domain name resolution error or verifica
    网站SSL证书因为忘了续签,导致过期后无法进行续签,点击续签验证报错:Verificationfailed,domainnameresolutionerrororverificationURLcannotbeaccessed! 解决方法:1.点击SSL,在面板中选择“Let'sEncrypt”,1.1、选择DNSVerification(Wildcardsupport);1.2、......
  • Sectigo SSL证书:全球SSL证书市场占有率最高品牌
    Sectigo(原ComodoCA)是全球SSL证书市场占有率最高的SSL证书品牌,由于其产品安全,价格低,受到大量用户的信任和欢迎。Sectigo旗下的SSL证书品牌包括Sectigo,PositiveSSL,SectigoEnterprise等。其SSL证书产品凭借卓越的安全性、广泛的认可度以及高效的服务,成为了众多企业和组......