Приведенный выше код на @Hardy это хорошо с двумя серверами, другой способ может быть поместить код переадресации, если блок в начале,
server {
listen 80;
server_name mydomain.com;
if ($request_uri ~ "publish") {
return 301 https://$server_name$request_uri;
}
...
location/{
...
}
...
}
server {
listen 443;
server_name mydomain.com;
...
}
Если вам это нужно, чтобы быть только с одним сервером, вы можете определить оба порта на одном сервере и HTTPS требуется код, а затем удалите второй сервер, следующим образом,
map $request_uri $tmp_do_redirect {
"~publish" 1;
default 0;
}
map $scheme $do_redirect {
"https" 0;
default $tmp_do_redirect;
}
server {
listen 80;
listen 443;
server_name mydomain.com;
#https code, like ssl, certificate, etc#
...
if ($do_redirect = "1") {
return 301 https://$server_name$request_uri;
}
...
location/{
...
}
...
}