OPENWRT 使用nginx作为web服务器

这篇具有很好参考价值的文章主要介绍了OPENWRT 使用nginx作为web服务器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

OPENWRT 使用nginx作为web服务器

在op上大家使用nginx作为web服务器,主要是为了其强大的反向代理功能,但op上的nginx官方做了一定的修改,配置上稍显复杂,几篇文章也是比较老的,配置也是一头雾水,作业都不好抄,索性自己查了资料学了些nginx的内容,实现了如下的功能:

####默认你已经完成 域名申请,配置DDNS 和 申请ssl证书的操作。

修改UCI控件

OP把uci配置加于nginx的配置之上,所以第一步先关闭uci的配置管理。
其实第三篇参考文章(官方文档)已经讲的很清楚了,如果你需要简单的管理nginx,用uci就够了,需要自己配置nginx的就关闭uci管理。
那当然是关闭啦:
第一种优雅的方式,登录后台命令行输入:

uci set nginx.global.uci_enable=false
uci commit nginx

这两步关闭了uci的配置接管
第二种直接的方式,修改/etc/config/nginx:

config main 'global'
	#把这里的true修改为false就行了
	option uci_enable 'false'

config server '_lan'
	option server_name '_lan'
	list include 'restrict_locally'
	list include 'conf.d/*.locations'
	option uci_manage_ssl 'self-signed'
	option ssl_certificate '/etc/nginx/conf.d/_lan.crt'
	option ssl_certificate_key '/etc/nginx/conf.d/_lan.key'
	option ssl_session_cache 'shared:SSL:32k'
	option ssl_session_timeout '64m'
	option access_log 'off; # logd openwrt'

config server '_redirect2ssl'
	list listen '80'
	list listen '[::]:80'
	option server_name '_redirect2ssl'
	option return '302 https://$host$request_uri'

修改之后,重启后nginx也不再受到uci的管理了,其实到这里剩下的配置就和常规nginx一样了。

解除内网访问http重定向到https的问题

修改/etc/nginx/nginx.conf这个配置文件:
那我这里就贴出具体修改的代码块

	server { #see uci show 'nginx._lan'
		listen 443 ssl default_server;
		listen [::]:443 ssl default_server;
		server_name _lan;
		include restrict_locally;
		include conf.d/*.locations;
		ssl_certificate /etc/nginx/conf.d/_lan.crt;
		ssl_certificate_key /etc/nginx/conf.d/_lan.key;
		ssl_session_cache shared:SSL:32k;
		ssl_session_timeout 64m;
		access_log off; # logd openwrt;
	}

	server { #see uci show 'nginx._redirect2ssl'
		listen 80;
		listen [::]:80;
		server_name _redirect2ssl;
		return 302 https://$host$request_uri;
	}

修改为:

   server { #see uci show 'nginx._lan'
   	listen 80;
   	listen [::]:80;
   	server_name _lan;
   	include restrict_locally;
   	include conf.d/*.locations;
   	access_log off; # logd openwrt;
   }

这里解释一下,好多文章是留下了 _redirect2ssl这个虚拟服务器配置,这里保留哪个虚拟服务器并不影响使用,只是/etc/nginx/目录下有个lan的配置,凭感觉来的。

这个就是本地web端,即OP的管理页面:

   	include conf.d/*.locations;

这个是局域网保留网段的过滤,使得只能内网ip才能访问op的管理页面:

   	include restrict_locally;

加上国内三大运营商默认ban了80端口443端口等一系列常见端口,其实某种意义上讲非常安全。

修改好配置后,命令行输入:

nginx -t

检查一下配置是否存在低级的语法错误。
在输入重载重启nginx命令:

service nginx reload
service nginx restart

至此内网通过ip访问就不会再强制https访问了

添加SSL证书

网上教你怎么申请ssl证书的非常多,现在好多是通过acme.sh脚本自动申请,另外就是通过域名提供商申请免费的ssl证书,
这里就不再赘述了,自行搜索。
nginx添加ssl证书就是声明一下ssl_certificate和ssl_certificate_key两个值就行了,这里提供一种全局添加的方式。
修改/etc/nginx/nginx.conf这个配置文件:

   gzip_proxied any;
   
   root /www;
   
   #####将以下内容添加到配置文件中#####
   
   # Mozilla Intermediate configuration
   ssl_protocols          TLSv1.2 TLSv1.3;
   #以下协议需要确认硬件是否支持,如果不支持或者不确定可以直接去除
   ssl_ciphers            ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
   
   #以下修改为自己申请的域名公钥和私钥文件地址
   ssl_certificate /etc/nginx/conf.d/example.com.crt;
   ssl_certificate_key /etc/nginx/conf.d/example.com.key;
   #以上修改为自己申请的域名公钥和私钥文件地址
   ssl_session_cache shared:SSL:32k;
   ssl_session_timeout 64m;
   
   #####将以上内容添加到配置文件中#####
   
   server { #see uci show 'nginx._lan'

添加好后重载并重启nginx服务。
修改好后就有个全局的ssl证书声明,如果你有多个域名需要反向代理,那就需要为每个不同域名对应的服务器配置对应的ssl证书了。

添加反向代理

一般来说,需要外网的服务,直接做一个端口转发到内网指定ip的指定端口就行了:

但是使用nginx反向代理的话,外网数据首先要转发到op端的指定端口再由op上的nginx转发给局域网ip

所以记得在op->防火墙->端口转发中将对应端口转发到op的本地端口:
OPENWRT 使用nginx作为web服务器
我这里按照nginx的习惯做法,在/etc/nginx/conf.d目录下创建了一个example.com.conf的配置文件:

server {
   #一般加ssl后缀就可以了,我这里添加了对http2协议的要求。
   listen 9080 ssl http2;
   listen [::]:9080 ssl http2;
   #修改为自己申请的域名
   server_name example.com;

   location / {
   	#修改为自己需要代理的局域网ip和端口号
   	proxy_pass http://localserver:9080;
   	proxy_set_header Host $host;
   	#以下配置文件是参考配置网站生成的配置不添加也没问题
   	include nginxconfig.io/proxy.conf;
   }
   access_log on; # logd openwrt;
   # location / { ... } # root location for this server.
}

添加好后测试配置是否存在语法问题,重载并重启nginx服务,如果发现通过域名访问失败时,先不要慌。
1.在内网通过nginx所在服务器加配置的端口号访问一下,确认内网服务是否正常
2.确认域名动态解析是否生效正确
3.以上都不是,那可能你开放的端口被运营商ban了,换个端口吧

这里贴出/etc/nginx/nginxconfig.io/proxy.conf的配置内容

proxy_http_version                 1.1;
proxy_cache_bypass                 $http_upgrade;

# Proxy SSL
proxy_ssl_server_name              on;

# Proxy headers
proxy_set_header Upgrade           $http_upgrade;
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_set_header X-Forwarded-Host  $host;
proxy_set_header X-Forwarded-Port  $server_port;

# Proxy timeouts
proxy_connect_timeout              60s;
proxy_send_timeout                 60s;
proxy_read_timeout                 60s;

这些改动都是参考NGINX配置生成网站的demo修改的,自行斟酌添加:NGINX 配置配置高性能、安全、稳定的NGINX服务器的最简单方法.

添加外网访问http自动转为https

到这里其实已经可以正常访问了,但是如果你用http去访问一个强制https访问的端口就会出现nginx的400报错,意思你该用https访问。
这里你自然可以参考内网http强制转https的写法,但我记得我测试有点问题,我这里贴出一个最近找到的对于域名访问全部重定向为https的方法,当然你也可以修改端口为指定端口:

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

主要参考文章

K3终极折腾记<三> --通过ipv6域名远程访问openwrt、https证书安装配置.
OpenWrt 上设置 nginx HTTP 不重定向到 HTTPS 以正常使用 OpenClash yacd 面板.
Nginx webserver.文章来源地址https://www.toymoban.com/news/detail-439911.html

到了这里,关于OPENWRT 使用nginx作为web服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 具有公网IP的服务器作为代理服务器,并使用Nginx将内网服务器反向代理

    在代理服务器上安装Nginx。如果您正在使用Linux操作系统,则可以使用包管理器来安装Nginx。例如,如果您使用的是Ubuntu,可以使用以下命令安装: 配置Nginx以将HTTP和HTTPS请求转发到内部服务器。打开Nginx的主配置文件/etc/nginx/nginx.conf,并在http块中添加以下代码: 注意: 将

    2024年01月25日
    浏览(35)
  • 使用Nginx作为反向代理服务器在Linux中的最佳实践

    在Linux环境下,Nginx因其高效性能、稳定性以及丰富的功能集而广泛用于作为反向代理服务器。以下是在Linux中使用Nginx作为反向代理服务器的最佳实践: 1. 安装与配置 首先,确保你的Linux发行版已经安装了Nginx。大多数Linux发行版都提供了Nginx的包管理工具。例如,在基于Deb

    2024年01月17日
    浏览(35)
  • nginx 作为vue项目服务器简单配置

    一个简单配置就玩了。 我这个项目有个特殊的地方,一个项目用了两个后台,请求的地址就不一样,我是根据前端请求uri区别使用那个后端的。比如浏览器http://localhost/system/user/list就使用 localhost:8080后台,如果是http://localhost/business/xxxx就使用localhost:8081后台,nginx配置如下:

    2024年02月13日
    浏览(31)
  • 配置Nginx作为静态资源服务器及安全策略

    上一篇文章写了Nginx负载均衡实现方案详解,有同学私信我说能不能写一篇关于nginx代理静态资源的文章。当然没问题,这篇文章就分享一下如何配置Nginx作为静态资源服务器同时也分享一些常用的安全策略配置。 静态资源指的是在服务器端存储的不会变化的文件,这些文件的

    2024年02月21日
    浏览(36)
  • Nginx 配置一级和二级证书以及作为静态资源服务器

    卷挂载中的 ssl 证书替换为自己 ssl 证书的位置。 关于 nginx *.conf 配置文件不过多描述! 在同一个 default.conf 文件中写 server 就可以。 只作为简单静态资源服务器!

    2024年01月18日
    浏览(44)
  • CentOS系统中如何配置Nginx作为静态HTTP服务器

    在CentOS系统中,Nginx是一个流行的Web服务器软件,它可以高效地提供静态HTTP服务。以下是在CentOS中配置Nginx作为静态HTTP服务器的步骤: 1. 安装Nginx 首先,您需要确保已安装Nginx。可以使用以下命令安装Nginx: bash 复制代码 sudo yum install nginx 2. 配置Nginx Nginx的配置文件位于 /etc

    2024年01月23日
    浏览(37)
  • 如何在OpenWRT部署uhttpd搭建服务器实现远程访问本地web站点

    uhttpd 是 OpenWrt/LuCI 开发者从零开始编写的 Web 服务器,目的是成为优秀稳定的、适合嵌入式设备的轻量级任务的 HTTP 服务器,并且和 OpenWrt 配置框架非常好地集成在一起。它是管理 OpenWrt 的默认的 Web 服务器,还提供了现代 Web 服务器所有的 功能 。 下面我们将在openwrt上部署

    2024年01月22日
    浏览(43)
  • 将树莓派转身为强大的Web服务器:使用Nginx和cpolar实现远程访问

    安装 Nginx(发音为“engine-x”)可以将您的树莓派变成一个强大的 Web 服务器,可以用于托管网站或 Web 应用程序。相比其他 Web 服务器,Nginx 的内存占用率非常低,可以在树莓派等资源受限的设备上运行。同时结合cpolar 内网穿透工具即可实现远程访问。 在树莓派安装Nginx也是

    2024年02月12日
    浏览(26)
  • web服务器—nginx

    Nginx(“engine x”)是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。和apache一样,都是web服务器软件,因为其性能优异,所以被广大运维喜欢。又因为nginx是一个轻量级的web服务器,相比apache来说 资源消耗更低 。

    2023年04月09日
    浏览(36)
  • 如何在虚拟专用服务器上配置 Nginx Web 服务器

    本文档涵盖的是不再受支持的 Ubuntu 版本。如果您目前正在运行 Ubuntu 12.04 服务器,我们强烈建议升级或迁移到受支持的 Ubuntu 版本: 升级到 Ubuntu 14.04 从 Ubuntu 14.04 升级到 Ubuntu 16.04 将服务器数据迁移到受支持的版本 原因: Ubuntu 12.04 已于 2017 年 4 月 28 日到达生命周期终点(

    2024年04月27日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包