Ubuntu22.04下,nginx安装,配置https和反向代理

这篇具有很好参考价值的文章主要介绍了Ubuntu22.04下,nginx安装,配置https和反向代理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 nginx安装

# 创建nginx安装用户
sudo useradd -s /sbin/nologin www -M
#  系统更新
sudo apt update
# 通过以下命令安装编译器和调试器
sudo apt install build-essential
sudo apt-get install manpages-dev
gcc --version

# 安装依赖
sudo apt install openssl libssl-dev -y
sudo apt install libpcre3 libpcre3-dev -y
sudo apt install zlib1g-dev -y
sudo apt -y install make
# 下载nginx安装包
sudo wget https://nginx.org/download/nginx-1.22.1.tar.gz
# 解压缩
sudo tar -zxf nginx-1.22.1.tar.gz
cd /opt/nginx-1.22.1

sudo ./configure --prefix=/usr/local/nginx/ --user=www --group=www --with-http_stub_status_module --with-http_ssl_module

sudo make
sudo make install

2 nginx配置https

想要给nginx配置https,可以使用自己生成的证书,这种证书是不安全的,多用于测试环境;正式环境使用从证书机构购买的证书。
此处使用的自己生成的证书做测试。

2.1 使用openssl自生成证书

此处使用openssl来生成证书,多用于测试

1、查看openssl是否安装

sudo openssl version -a

其中:OPENSSLDIR: "/usr/lib/ssl"为openssl的安装路径,配置文件中有一些默认设置,如果有特殊需要可进行修改:/usr/lib/ssl/openssl.cnf文件

2、生成证书

1、生成根证书的私钥(CA证书的RSA密钥,PEM格式)

sudo openssl genrsa -des3 -out server.key 2048

此处我设置为:123456
命令说明:
 - genrsa:产生rsa密钥命令
 - -out: 输出文件名 
 - 2048: 密钥的长度位数,默认为512

ubuntu22.04 下nginx发布http服务教程,服务,nginx,https,运维,代理模式,jenkins,gitlab
2、openssl调用此文件会经常要求输入密码,如果想去除此输密码的步骤,可以执行命令

sudo openssl rsa -in server.key -out server.key

则输入之前密码后可去除密码。

3、生成证书签署请求,(创建服务器证书的申请文件server.csr)

sudo openssl req -new -key server.key -out server.csr

没有去除密码的界面
ubuntu22.04 下nginx发布http服务教程,服务,nginx,https,运维,代理模式,jenkins,gitlab
去除密码的界面:
ubuntu22.04 下nginx发布http服务教程,服务,nginx,https,运维,代理模式,jenkins,gitlab

4、生成自签证书,即根证书CA(有效期为十年的),执行命令:生成ca.crt文件

sudo openssl req -new -x509 -key server.key -out ca.crt -days 3650

ubuntu22.04 下nginx发布http服务教程,服务,nginx,https,运维,代理模式,jenkins,gitlab
参照2输入所需信息。
命令说明:

  • -new:表示生成一个新证书签署请求
  • -x509:专用于CA生成自签证书,如果不是自签证书则不需要此项
  • -key:用到的私钥文件
  • -out:证书的保存路径
  • -days:证书的有效期限,单位是day(天),默认是openssl.cnf的default_days

5、创建服务器证书(有效期十年):

sudo openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt

ubuntu22.04 下nginx发布http服务教程,服务,nginx,https,运维,代理模式,jenkins,gitlab

2.2 Nginx配置https(默认443端口)

1、把刚才生成的文件 server.key,server.crt 拷贝到Nginx安装路径的nginx/ssl下面
2、修改nginx.conf文件

cat conf/nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen 443 ssl;
        server_name 192.168.216.180;

        #ssl证书的pem文件路径
        ssl_certificate  /usr/local/nginx/ssl/server.crt;
        #ssl证书的key文件路径
        ssl_certificate_key /usr/local/nginx/ssl/server.key;
        # ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;        
        # 配置指定了服务器应该支持的SSL/TLS协议版本。在这里,包括了TLS 1.0、TLS 1.1、TLS 1.2和TLS 1.3。这些协议用于在客户端和服务器之间建立安全连接。        
        # ssl_ciphers HIGH:!aNULL:!MD5;        
        # 这行配置定义了支持的密码套件用于加密。密码套件确定了在SSL/TLS握手期间使用的加密算法。在这里,HIGH表示使用一组强大的密码套件,!aNULL表示不允许无加密的身份验证,而!MD5表示不支持使用MD5算法的密码套件。这个配置确保仅使用没有已知漏洞的强大密码套件进行加密
        # ssl_prefer_server_ciphers on;
        # 用于指定服务器在选择密码套件时的偏好。这个选项的作用是告诉服务器在客户端和服务器之间进行SSL/TLS握手时,优先选择服务器端支持的密码套件,而不是客户端提供的密码套件列表。当设置为 ssl_prefer_server_ciphers on; 时,服务器会优先选择自己支持的密码套件,从而更好地控制加密过程,并确保使用的密码套件符合服务器的安全要求。
        location / {
                root   html;
                index  index.html index.htm;
        }
    }
    server {
        listen       80;
        server_name  localhost 192.168.216.180;
        rewrite ^(.*)$ https://$host$1 permanent;
    }
}

3、重启Nginx

sbin/nginx -s reload

3 配置多tomcat反向代理

基于端口的虚拟主机

cat conf/nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       81;
        server_name  localhost;
        location / {
            proxy_pass http://192.168.92.100:8081/;
            proxy_set_header           Host $host;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for;
            client_max_body_size  100m;
            root   html;
            index  index.html index.htm;
        }
       
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    
     server {
        listen       82;
        server_name  localhost;
        location / {
            proxy_pass http://192.168.92.100:8082/;
            proxy_set_header           Host $host;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for;
            client_max_body_size  100m;
            root   html;
            index  index.html index.htm;
        }
        
       
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

# 重启nginx
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload

4 Nginx反向代理Gitlab(跨域)

还是在nginx配置文件中配置

server {
        listen       81;
        server_name  localhost;

        location / {
            proxy_set_header  Host  $proxy_host;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_set_header X-Forwarded-Proto $scheme;

            proxy_pass http://192.168.92.102:8088;
            #proxy_pass http://172.16.1.66:8088/users/sign_in;

        }
       
        location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
            proxy_pass http://172.16.1.66:8088;
            root  /opt/gitlab/embedded/service/gitlab-rails/public;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

ubuntu22.04 下nginx发布http服务教程,服务,nginx,https,运维,代理模式,jenkins,gitlab
ubuntu22.04 下nginx发布http服务教程,服务,nginx,https,运维,代理模式,jenkins,gitlab

总结

nginx配置反向代理时,不同网站的配置方法不一样,比如Jenkins这种本身就存在nginx代理的网页。所以我们在配置时,需要根据情况来配置不能一概而论。文章来源地址https://www.toymoban.com/news/detail-846926.html

到了这里,关于Ubuntu22.04下,nginx安装,配置https和反向代理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ubuntu 22.04 安装nginx1.24.0

    安装编译Nginx所需的依赖项: 下载Nginx 1.24.0源代码包: 解压源代码包: 配置编译选项和模块: 编译源代码: 安装已编译的二进制文件和相关文件: 验证安装是否成功:

    2024年02月15日
    浏览(32)
  • Nginx配置网络分流,监听80和443端口(Ubuntu22.04)

    启动 重载配置 查看状态 文件目录 /etc/nginx/nginx.conf 80端口尚未添加http2参数 使用http://的格式,如果使用了CF的CDN加速,则将域名对应的SSL/TLS边缘证书选项的始终使用HTTPS关闭 SSL/TLS 加密模式随意 使用https://的格式,如果使用了CF的CDN加速,则将域名对应的SSL/TLS边缘证书选项的

    2024年01月19日
    浏览(26)
  • ubuntu 22.04 设置 apt 代理 配置 清华源 add-apt-repository 代理

    curl 设置 代理 sudo curl -x “http://192.168.1.2:3128” 需要验证的代理 sudo curl -x “http://username:password@192.168.1.2:3128” 另一种临时代理 https://askubuntu.com/questions/53146/how-do-i-get-add-apt-repository-to-work-through-a-proxy 如果没有代理配置文件就创建一个 sudo touch /etc/apt/apt.conf.d/proxy.conf 编辑配置

    2024年02月05日
    浏览(28)
  • ubuntu22.04离线安装jdk、mysql、redis、mongodb、nginx

    ubuntu22.04离线安装jdk、mysql、redis、mongodb、nginx) 1.1 安装包列表 序号 名称 1 jdk-8u181-linux-x64.tar.gz 1.2 安装方式 2.1 安装包列表 序号 名称 1 net-tools_1.60+git20181103.0eebece-1ubuntu5_amd64.deb 2 unzip_6.0-20ubuntu1.1_amd64.deb 3 g++11.3.zip 4 gcc11.3.zip 5 make_4.3-4.1build1_amd64.deb 2.2 安装方式 3.1 安装包列表

    2024年02月09日
    浏览(37)
  • Ubuntu22.04安装、配置、美化、软件安装、配置开发环境

    因为ubuntu的安装网上的教程特别多了,所以这里不做赘述,推荐使用小破站这个up主的教程:Windows 和 Ubuntu 双系统从安装到卸载_哔哩哔哩_bilibili (1)打开软件和更新 (2)在 “ 下载自 ” 中选择 “ 其他 ”  选中 中科大镜像源 (也可选择阿里源,清华源,这里以中科大源

    2024年02月01日
    浏览(40)
  • Ubuntu18.04~Ubuntu22.04安装并配置VNC

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 有些操作需要Desktop环境而又不方便去现场看的这个方法能够满足你的需求,就是使用VNC实现远程桌面,这个方法理论上只适用于局域网环境,如果是互联网可能需要配代理什么的,这里不详细讨论。 当

    2024年02月07日
    浏览(44)
  • Ubuntu 22.04 Samba 安装和配置

    安装 检查服务状态 检查是否启用(开机自启动) (可选)添加用户 设置密码 创建公开共享(可匿名访问) 按以下格式创建内容 说明: [public] 方括号内为share后显示的目录名 path = /data/ 为用于share的本地路径 browsable =yes 是否可以浏览 create mask = 0660 directory mask = 0771 writable = yes 是否可

    2024年02月17日
    浏览(33)
  • Ubuntu22.04安装Git及配置

    到Github添加ssh-key 头像-settings-SSH and GPG keys-New SSH key 测试连接 新增配置(上一步成功便不需要此步骤)

    2024年02月13日
    浏览(41)
  • ubuntu22.04安装jenkins并配置

    安装 验证 ubuntu配置git ubuntu配置maven 导入Jenkins存储库的GPG密钥 将Jenkins存储库添加到APT源列表中 使APT获取最新的Jenkins软件包 补充 遇到错误 或者 导入密钥 更新apt-get的存储库 更新一下apt-get本身的版本 重新update 启动 Jenkins 服务: 停止 Jenkins 服务: 重启Jenkins 服务: 首次或

    2024年02月21日
    浏览(46)
  • 【WSL】Ubuntu 22.04 安装配置docker

    WSL就是个坑! WSL就是个坑! WSL就是个坑! 我第一次安装使用 Ubuntu 还是第一台笔记本,装了双系统,版本是18.04 LTS,但是我那个时候只有机械硬盘,因此 Ubuntu 桌面十分的卡。 兜兜转转,大三的时候发现微软的 WSL2 很好用,想装一个学习 Linux,当然选择了那个时候最新的

    2024年02月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包