Last active
November 12, 2018 06:30
-
-
Save AlexKMDev/1891d0b4ec3ca2e34d97 to your computer and use it in GitHub Desktop.
homebrew nginx http/2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
brew install nginx --devel --with-http2 | |
# or | |
brew install https://gist.githubusercontent.com/Anakros/1891d0b4ec3ca2e34d97/raw/1d75c84f784845047aa7fb52b06becf9c1350da4/nginx.rb --with-http2 --devel |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Nginx < Formula | |
desc "HTTP(S) server and reverse proxy, and IMAP/POP3 proxy server" | |
homepage "http://nginx.org/" | |
url "http://nginx.org/download/nginx-1.8.0.tar.gz" | |
sha256 "23cca1239990c818d8f6da118320c4979aadf5386deda691b1b7c2c96b9df3d5" | |
head "http://hg.nginx.org/nginx/", :using => :hg | |
bottle do | |
revision 1 | |
sha256 "6df7b883f9214c5c0969559f6cc9ed56f9537263a1ef4882dae77b0b7af5a1df" => :yosemite | |
sha256 "68741910d6ee58f7ee1134c7b4c62dfd490ee337c9c0beb0d188edc418b0bd93" => :mavericks | |
sha256 "a622d0e1bfd55d8634520d72b41319da19828b9ab11063b6243d5b5f3d77ad08" => :mountain_lion | |
end | |
devel do | |
url "http://nginx.org/download/nginx-1.9.3.tar.gz" | |
sha256 "4298c5341b2a262fdb8dbc0a1389756181af8f098c7720abfb30bd3060f673eb" | |
end | |
env :userpaths | |
# Before submitting more options to this formula please check they aren't | |
# already in Homebrew/homebrew-nginx/nginx-full: | |
# https://github.com/Homebrew/homebrew-nginx/blob/master/nginx-full.rb | |
option "with-passenger", "Compile with support for Phusion Passenger module" | |
option "with-webdav", "Compile with support for WebDAV module" | |
option "with-debug", "Compile with support for debug log" | |
option "with-spdy", "Compile with support for SPDY module" | |
option "with-http2", "Compile with support for HTTP/2 module" | |
option "with-gunzip", "Compile with support for gunzip module" | |
depends_on "pcre" | |
depends_on "passenger" => :optional | |
depends_on "openssl" => :recommended | |
depends_on "libressl" => :optional | |
patch do | |
url "http://nginx.org/patches/http2/patch.http2.txt" | |
sha256 "8fe4d8ca0301370902123136b401e8bd7112ed6c36e92a8fd8a0d9277dc870cb" | |
end if build.with? "http2" | |
def install | |
# Changes default port to 8080 | |
inreplace "conf/nginx.conf", "listen 80;", "listen 8080;" | |
inreplace "conf/nginx.conf", " #}\n\n}", " #}\n include servers/*;\n}" | |
pcre = Formula["pcre"] | |
openssl = Formula["openssl"] | |
libressl = Formula["libressl"] | |
if build.with? "libressl" | |
cc_opt = "-I#{pcre.include} -I#{libressl.include}" | |
ld_opt = "-L#{pcre.lib} -L#{libressl.lib}" | |
else | |
cc_opt = "-I#{pcre.include} -I#{openssl.include}" | |
ld_opt = "-L#{pcre.lib} -L#{openssl.lib}" | |
end | |
args = %W[ | |
--prefix=#{prefix} | |
--with-http_ssl_module | |
--with-pcre | |
--with-ipv6 | |
--sbin-path=#{bin}/nginx | |
--with-cc-opt=#{cc_opt} | |
--with-ld-opt=#{ld_opt} | |
--conf-path=#{etc}/nginx/nginx.conf | |
--pid-path=#{var}/run/nginx.pid | |
--lock-path=#{var}/run/nginx.lock | |
--http-client-body-temp-path=#{var}/run/nginx/client_body_temp | |
--http-proxy-temp-path=#{var}/run/nginx/proxy_temp | |
--http-fastcgi-temp-path=#{var}/run/nginx/fastcgi_temp | |
--http-uwsgi-temp-path=#{var}/run/nginx/uwsgi_temp | |
--http-scgi-temp-path=#{var}/run/nginx/scgi_temp | |
--http-log-path=#{var}/log/nginx/access.log | |
--error-log-path=#{var}/log/nginx/error.log | |
--with-http_gzip_static_module | |
] | |
if build.with? "passenger" | |
nginx_ext = `#{Formula["passenger"].opt_bin}/passenger-config --nginx-addon-dir`.chomp | |
args << "--add-module=#{nginx_ext}" | |
end | |
args << "--with-http_dav_module" if build.with? "webdav" | |
args << "--with-debug" if build.with? "debug" | |
args << "--with-http_spdy_module" if build.with? "spdy" | |
args << "--with-http_v2_module" if build.with? "http2" | |
args << "--with-http_gunzip_module" if build.with? "gunzip" | |
if build.head? | |
system "./auto/configure", *args | |
else | |
system "./configure", *args | |
end | |
system "make", "install" | |
if build.head? | |
man8.install "docs/man/nginx.8" | |
else | |
man8.install "man/nginx.8" | |
end | |
(etc/"nginx/servers").mkpath | |
(var/"run/nginx").mkpath | |
end | |
def post_install | |
# nginx's docroot is #{prefix}/html, this isn't useful, so we symlink it | |
# to #{HOMEBREW_PREFIX}/var/www. The reason we symlink instead of patching | |
# is so the user can redirect it easily to something else if they choose. | |
html = prefix/"html" | |
dst = var/"www" | |
if dst.exist? | |
html.rmtree | |
dst.mkpath | |
else | |
dst.dirname.mkpath | |
html.rename(dst) | |
end | |
prefix.install_symlink dst => "html" | |
# for most of this formula's life the binary has been placed in sbin | |
# and Homebrew used to suggest the user copy the plist for nginx to their | |
# ~/Library/LaunchAgents directory. So we need to have a symlink there | |
# for such cases | |
if rack.subdirs.any? { |d| d.join("sbin").directory? } | |
sbin.install_symlink bin/"nginx" | |
end | |
end | |
def passenger_caveats; <<-EOS.undent | |
To activate Phusion Passenger, add this to #{etc}/nginx/nginx.conf, inside the 'http' context: | |
passenger_root #{Formula["passenger"].opt_libexec}/lib/phusion_passenger/locations.ini; | |
passenger_ruby /usr/bin/ruby; | |
EOS | |
end | |
def caveats | |
s = <<-EOS.undent | |
Docroot is: #{var}/www | |
The default port has been set in #{etc}/nginx/nginx.conf to 8080 so that | |
nginx can run without sudo. | |
nginx will load all files in #{etc}/nginx/servers/. | |
EOS | |
s << "\n" << passenger_caveats if build.with? "passenger" | |
s | |
end | |
plist_options :manual => "nginx" | |
def plist; <<-EOS.undent | |
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
<plist version="1.0"> | |
<dict> | |
<key>Label</key> | |
<string>#{plist_name}</string> | |
<key>RunAtLoad</key> | |
<true/> | |
<key>KeepAlive</key> | |
<false/> | |
<key>ProgramArguments</key> | |
<array> | |
<string>#{opt_bin}/nginx</string> | |
<string>-g</string> | |
<string>daemon off;</string> | |
</array> | |
<key>WorkingDirectory</key> | |
<string>#{HOMEBREW_PREFIX}</string> | |
</dict> | |
</plist> | |
EOS | |
end | |
test do | |
system "#{bin}/nginx", "-t" | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/Library/Formula/nginx.rb b/Library/Formula/nginx.rb | |
index da2e99f..7178806 100644 | |
--- a/Library/Formula/nginx.rb | |
+++ b/Library/Formula/nginx.rb | |
@@ -26,6 +26,7 @@ class Nginx < Formula | |
option "with-webdav", "Compile with support for WebDAV module" | |
option "with-debug", "Compile with support for debug log" | |
option "with-spdy", "Compile with support for SPDY module" | |
+ option "with-http2", "Compile with support for HTTP/2 module" | |
option "with-gunzip", "Compile with support for gunzip module" | |
depends_on "pcre" | |
@@ -33,6 +34,12 @@ class Nginx < Formula | |
depends_on "openssl" => :recommended | |
depends_on "libressl" => :optional | |
+ patch do | |
+ url "http://nginx.org/patches/http2/patch.http2.txt" | |
+ sha256 "8fe4d8ca0301370902123136b401e8bd7112ed6c36e92a8fd8a0d9277dc870cb" | |
+ end if build.with? "http2" | |
+ | |
+ | |
def install | |
# Changes default port to 8080 | |
inreplace "conf/nginx.conf", "listen 80;", "listen 8080;" | |
@@ -79,6 +86,7 @@ class Nginx < Formula | |
args << "--with-http_dav_module" if build.with? "webdav" | |
args << "--with-debug" if build.with? "debug" | |
args << "--with-http_spdy_module" if build.with? "spdy" | |
+ args << "--with-http_v2_module" if build.with? "http2" | |
args << "--with-http_gunzip_module" if build.with? "gunzip" | |
if build.head? |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment